トップページ⇒php
1001コメント283KB

【PHP】下らねぇ質問はここに書き込みやがれ 46

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/05/12(土) 16:43:57ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0477nobodyさん2007/05/18(金) 21:43:20ID:???
なんでエラーになるかを教えて
0478nobodyさん2007/05/18(金) 21:49:30ID:???
文法が間違ってるからじゃね
0479nobodyさん2007/05/18(金) 22:28:18ID:ySJdsQiL
>>475
間違ってることはわかる
でもどう間違ってるか具体的に説明できん俺・・・・・
0480nobodyさん2007/05/18(金) 22:49:32ID:???
staticかどうかというより、
メンバー変数に、定数以外のもので初期化代入できるかどうかが
マニュアル的に、はっきりしない。

ttp://www.php.net/manual/ja/language.oop.php
この説明(class Cart)を見ると
<?php
class Cart{
var $name = $firstname;
}
?>
なんていうのは、あたかもphp5なら動きそうなのに、実はphp4と同様動かない。
0481nobodyさん2007/05/18(金) 22:51:53ID:???
>>475
プロパティの初期化には定数値しか使えない
0482nobodyさん2007/05/18(金) 22:55:47ID:???
>>480
確かにそのページの「PHP4では動作しない」っていう
書き方だけを見ると誤解しそうな書き方ではあるが、
PHP5の説明のページにも明示的にプロパティの初期化には
定数しか扱えないと書いてある
http://jp.php.net/manual/ja/language.oop5.basic.php
0483nobodyさん2007/05/18(金) 22:55:48ID:???
クラス定義中に自クラスのメンバを参照できるわけない。
staticか非staticかに関わらず、メンバの初期値は定数のみ。
他の言語でも大体同じ。
PHPでデフォルト値を共通化したいなら、オブジェクト定数とか使う。

じゃだめなのか?
0484nobodyさん2007/05/18(金) 22:55:58ID:???
↑根拠なしで書くんじゃないよ
04854802007/05/18(金) 22:57:55ID:???
>>482
なるほど。これか。
>デフォルト値は定数でなければなりません。(たとえば) 変数、クラスのメンバあるいは関数コールなどは使用できません。
勉強になった。さんきゅ。
0486nobodyさん2007/05/18(金) 22:58:22ID:???
根拠って何だ?マニュアルのことか?
そんなのはっきりムリって書いてあんだろ。
もっと論理的な根拠を求めてんのかと思った。
0487nobodyさん2007/05/18(金) 23:05:19ID:???
このスレはマニュアル読めない人が他の人に読んでもらうスレですよ。
04884752007/05/18(金) 23:18:31ID:???
プロパティーの初期化は定数じゃないと駄目だったのか…
�dクス
0489nobodyさん2007/05/19(土) 00:32:14ID:/rdI7UAA
>>486
なぜ定数しか使えないかというと
メモリに確保されるタイミングによるんだよ。
メモリにない物は参照できないので代入できない・・・・

後は任せた>>490
0490nobodyさん2007/05/19(土) 00:36:48ID:???
>>500
0491nobodyさん2007/05/19(土) 01:09:35ID:???
ロングパスw
0492nobodyさん2007/05/19(土) 01:56:41ID:???
>>464

>>442
0493nobodyさん2007/05/19(土) 02:21:28ID:5dZMG2UG
includeで、1MBもあるfunctionのファイル読み込んだら重くなる?
0494nobodyさん2007/05/19(土) 02:35:05ID:???
>>493
まずは自分の環境でやってみよう
お兄さんとのやくそくだよ!
0495nobodyさん2007/05/19(土) 02:43:17ID:???
何をそんなに詰め込んでるんだ
0496nobodyさん2007/05/19(土) 03:30:54ID:???
遠まわしに人柱をおねがいしますってことですね
0497nobodyさん2007/05/19(土) 06:29:26ID:MWMv22M6
すいません、質問させてください。
当方、夢もなにもない25歳です。
こんな私ですがいままで徹夜してマニュアル読んでコード書いてPHPを学習してました。
PHPは夢を作る道具になれますか?
0498nobodyさん2007/05/19(土) 07:29:44ID:???
むしろPHPは夢だけは簡単に作れる道具です。
精進してください。
0499nobodyさん2007/05/19(土) 07:35:15ID:MWMv22M6
あなたのレスがみれてよかったです。
ありがとうございます。
0500nobodyさん2007/05/19(土) 07:48:29ID:zLRg1KJ9
sqlからwhere句を抜き出そうとしています
正規表現でWHEREを目印にして抜き出すとすると、
その前にSET HOGE='WHERE POGA'
等があった時にもヒットしてしまいます。
いわば「地の文」のWHEREだけがヒットするようにしたいのですが
いい方法があれば教えてください
0501nobodyさん2007/05/19(土) 07:52:44ID:???
ソースはなんも書いてないの?
0502nobodyさん2007/05/19(土) 08:02:51ID:G8ONhPg2
1〜18までの番号を出力して、重複値は表示させない。
と言うのを作っています。ソースは以下の通りです。

$array=array();
for($i=0;$i<5;$i++){
$number = rand(1,18);
if(array_search("$number",$array)){
}else{
$array[] = $number;
echo $number."<br />";
}
}

一度表示した数字を配列に入れて同じ数字が出たら出力しない
と言ったイメージなのですが、どうも上手く行きません。
ソースの指摘・アドバイスをしていただけないでしょうか?
0503nobodyさん2007/05/19(土) 08:05:50ID:???
>>502
なんかifの書き方が気に入らない。あと3分まってろ
0504nobodyさん2007/05/19(土) 08:19:33ID:???
//乱数生成

for ($i=0; $i<5; $i++) {

$rand[] = rand(1, 3)
;


}

//出力

$ary = array();

foreach($rand as $v) {

if (!in_array($v, $ary)) {

echo "<p>$v</p>";
} else {

echo "重複<br />";

}
$ary[] = $v;

}

あとはじぶんで改造しろ
05055022007/05/19(土) 08:23:24ID:???
>>504
ありがとうございます。つまり、乱数生成と出力を分けた方が良いって
事ですね。

ちょっとやってみます。ありがとうございました。
0506nobodyさん2007/05/19(土) 08:25:00ID:???
処理がわかりやすいようにわけてみたが
まあ書き方はいくらでもある。
ちなみにarray_searchを使うのはまちがえ

(PHP 4 >= 4.0.5, PHP 5)

array_search -- 指定した値を配列で検索し、見つかった場合に対応するキーを返す
0507nobodyさん2007/05/19(土) 10:04:49ID:vtcxjqU8
センスのある質問と回答が多いな
0508nobodyさん2007/05/19(土) 10:30:02ID:???
>>500
質問がPHPと関係ない

sqlの構文解析は以外と面倒だぞ
0509nobodyさん2007/05/19(土) 10:47:01ID:???
>>500
でも引用符とコメントだけ排除すればいいだけなら、ちょっとした字句解析でできそうではある。
whereの場所が特定できたら、構文は無視してorder byみたいな別のキーワードのとこまでを抜き出しちゃえばいいのかな。
これくらいの処理なら、PHPで書いてもそんなに重くはならないはず。
0510nobodyさん2007/05/19(土) 11:47:04ID:???
>>505
suffleしてarray_shiftかarray_pop使えばいいんでないの
0511nobodyさん2007/05/19(土) 11:52:10ID:???
なんで乱数つくってシャッフルする必要があるのかと
0512nobodyさん2007/05/19(土) 11:52:54ID:???
乱数作るのにshuffleするんだっつの
0513nobodyさん2007/05/19(土) 11:59:33ID:???
>>502
配列={1,2,3...15}
配列しゃっふる
配列の5まで表示
0514nobodyさん2007/05/19(土) 12:05:46ID:???
それだと応用がきかなくね?
0515nobodyさん2007/05/19(土) 12:18:26ID:???
そうか?むしろ容易に拡張や仕様変更ができる
扱いやすい手法に見えるけど。
0516nobodyさん2007/05/19(土) 12:27:12ID:???
たとえば1から999999まで数字があった場合とかどうすんの。。。
0517nobodyさん2007/05/19(土) 12:32:02ID:???
$array = range(1, 999999);
0518nobodyさん2007/05/19(土) 12:39:03ID:???
shuffle($array);
0519nobodyさん2007/05/19(土) 12:45:45ID:???
>>517
俺の環境だと
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 16 bytes) in C:\home\php\test.php on line 2

メモリリミットあげれば大丈夫なのかな
0520nobodyさん2007/05/19(土) 12:47:12ID:???
C:\home\php\test.php on line 2

↑これは一応隠すべきだったね すでにダミーのにしてあったらスマソ
0521nobodyさん2007/05/19(土) 12:50:53ID:a8u10R/4
なぜ隠す?
0522nobodyさん2007/05/19(土) 12:51:20ID:???
>>517
ひさしぶりにふいた
0523nobodyさん2007/05/19(土) 13:36:37ID:???
チャットを作っているのですが、FLASHでチャットを作るのとPHPでチャットを作るのはどちらが付加が低いのでしょうか?
0524nobodyさん2007/05/19(土) 13:37:13ID:???
linuxぽくしてるのがばれると恥ずかしいのか?w
0525nobodyさん2007/05/19(土) 13:56:19ID:???
>>520

べつにばれてもいいだろ。
おれはC:\www\homeにしてるけどな
0526nobodyさん2007/05/19(土) 14:00:49ID:???
何が問題で何のために隠すのか分かってないゆとりがまた一人・・・
0527nobodyさん2007/05/19(土) 14:00:57ID:???
/home/phpのどこがlinuxぽいのか
0528nobodyさん2007/05/19(土) 14:11:11ID:???
ここにパスを晒されても平気だと考える人と
パスを含むエラーを表示させるのが問題だと考える人の2パターンだと思うけど
ここは前者だな
0529nobodyさん2007/05/19(土) 14:15:29ID:???
C:\home\php\test.phpなんてありきたりなパスなら晒しても無問題じゃない?
0530nobodyさん2007/05/19(土) 14:22:36ID:???
$hoge[5] = 100;
$hoge[8] = 10;
$hoge[10] = 50
という配列($hoge[0]などはnull)を

$hoge[0] = 100;
$hoge[1] = 10;
$hoge[2] = 50

に変える方法きぼんう
0531nobodyさん2007/05/19(土) 14:30:33ID:???
>>530
array_merge($hoge)
0532nobodyさん2007/05/19(土) 14:34:35ID:???
IDださないやつはネタ
0533nobodyさん2007/05/19(土) 14:38:30ID:???
厳しいなw
0534nobodyさん2007/05/19(土) 14:44:03ID:???
IDださないやつにも回答してくれる方もいるが、その逆もあるからね
0535nobodyさん2007/05/19(土) 15:08:31ID:???
ID出したら魂が抜き取られる
0536nobodyさん2007/05/19(土) 15:18:24ID:???
実力に自身がある人、ちょっとPHP覚えてたいていのものならマニュアル片手に作れるって人へ
このスレもりあげてください

http://pc11.2ch.net/test/read.cgi/php/1162858489/
0537nobodyさん2007/05/19(土) 15:48:47ID:???
質問がないとひまだ・・・
0538nobodyさん2007/05/19(土) 16:29:31ID:???
俺が質問してやろう
このスレで質問に答えてる人たちはどんな仕事してるんですか?
0539nobodyさん2007/05/19(土) 16:32:48ID:???
ネットショップの雑用です・・・
0540nobodyさん2007/05/19(土) 16:49:32ID:???
フォームに入力したデータをデータベースに格納して、たまったデータをグラフに書き出すスクリプトって
簡単に書けますか? グラフのライブラリって使い易い物ありますか?
0541nobodyさん2007/05/19(土) 17:04:25ID:???
ID出さない奴は自演して釣ってるだけだよ。
誰かが変な回答してるとついつい訂正したくなるでしょ。
0542nobodyさん2007/05/19(土) 17:05:13ID:MWMv22M6
10行チャットを作りたいんですが、ログファイルtyatto.logの中に最新10行のログだけ記録するには
以下のコードの前に事前に最新9行分のデータを変数に格納して、それに最新の1行を連結するのが妥当でしょうか?


$string = "テスト\n";
$fopen = fopen("tyatto.log","a");

fwrite($fopen, $string);

fclose($fopen);

0543nobodyさん2007/05/19(土) 17:05:25ID:???
>>540
ちゃんとID出してね。
いろいろ方法はあるし、何を使うかによって難易度も
様々。
ライブラリは検索すればスグに分かるはずだよ。
ID出してないからヒントまで。

>>538
元プログラマだぜ
言語だけで言えばメジャーなものは一通りやったよ。
最近は外部の会社に常駐して基盤系(DBのバックアップ設計とか)
やってるよ
今C#とIronPhthonが気になる
0544nobodyさん2007/05/19(土) 17:06:41ID:???
>>542
やってみれば良いじゃん
0545nobodyさん2007/05/19(土) 17:08:45ID:???
>>542
テキストの中身は最新のものが先頭にあったほうがいいの?
それとも一番下?
0546nobodyさん2007/05/19(土) 17:11:30ID:MWMv22M6



>>545
最新のログさえ残れば順番はどちらでも気にしません。

>>544
>>542で書いたことをやってみたのですがなんか二回ファイルを開くのが無駄な気がしてコード省きました。すいません。
05475402007/05/19(土) 17:17:34ID:A36xsHpo
すみません、ちゃんと>>1読んでませんでした


>>543
検索するとWindows上で動かす人向けのサイトばっかりでイヤになり質問しました
もしよければもう少しヒントいただけると助かります レン鯖で、Flashじゃないものが良いです
0548nobodyさん2007/05/19(土) 17:17:47ID:???
>>546
一回で十分だろボケェー!
0549nobodyさん2007/05/19(土) 17:21:32ID:???
配列に
[0]=>"バナナ" [1]=>"みかん" [2]=>"りんご"

と言うように"が入っている場合、削除する方法はないでしょうか?
出来れば一番簡単(関数処理など)であればと思います。
0550nobodyさん2007/05/19(土) 17:26:24ID:???
>>547 php環境も作れないのか氏ね
0551nobodyさん2007/05/19(土) 17:26:55ID:???
何度も考えたのですがこれしか思いつきませんでしたので載せます。

$file = file($filename);

$cnt = count($file);

if ($cnt > $maxlog) {

$n = $cnt - $maxlog -1;

}

for ($i=$n; $i<$cnt; $i++) {

$string .= $file[$i];

}

$string .= $_POST['input']. "\n";


//この下は>>542のコードです

$string = "テスト\n";
$fopen = fopen("tyatto.log","a");
fwrite($fopen, $string);
fclose($fopen);
0552nobodyさん2007/05/19(土) 17:27:42ID:A36xsHpo
>>550
wamppがあるのに、つくれない人なんていないと思うんですけど・・・・
05535512007/05/19(土) 17:28:39ID:MWMv22M6
つづき


どんなささいなことでもかまいませんので修正箇所・ご指摘などご教授お願いいたします。
05545522007/05/19(土) 17:30:01ID:A36xsHpo
× wampp
○ xampp
0555nobodyさん2007/05/19(土) 17:33:37ID:???
>>551
http://jp.php.net/manual/ja/ref.filesystem.php

後、XSSでググる
05565552007/05/19(土) 17:36:23ID:???
やべ、間違えた
二行目は見なかった事にしてくれ
0557nobodyさん2007/05/19(土) 17:46:34ID:???
>>551
確かにXSSは考えたほうがいいものだけど
そのロジックに特に問題があるようには思えんぞ?
0558nobodyさん2007/05/19(土) 17:47:40ID:???
>>551
最後の $string = "テスト\n"; はまあ消し忘れだと思うが、
大筋そんな感じでいいんじゃないかね
0559nobodyさん2007/05/19(土) 18:08:32ID:MWMv22M6
>>556さんのご紹介くださったサイトをみて30分は粘ったのですがわかりませんでした。
XSSについて>>556さんのご指摘のとおり、以後セキュリティに配慮したコードの書き方に気をつけます。
>>551のコード中に不適切な行がございました。>>558さんに指摘していただくまで
気づきませんでした。大変失礼いたしました。

チャットを公で使う場合、犯罪予告なんか打たれたら証拠のログがなくなってしまうので
ログは貯めておいたよいのでしょうか。
みなさまアドバイス・ご教授ありがとうございます。
0560nobodyさん2007/05/19(土) 18:53:01ID:???
>>551
ファイルロックしておかないとログがトぶぞ。
0561nobodyさん2007/05/19(土) 19:20:28ID:???
> >>551のコード中に不適切な行がございました。>>558さんに指摘していただくまで
> 気づきませんでした。大変失礼いたしました。

釣りか真性だな
0562nobodyさん2007/05/19(土) 19:58:14ID:???
$_ENV["OS"]はphp5でなくなったのですか?
0563nobodyさん2007/05/19(土) 21:28:59ID:ZssAVHkG
FC6 + php5.1.6 + sqlite でサイト作ろうとしてますが
--
Fatal error: Call to undefined function sqlite_open()
--
となってしまいます。

phpinfo() にて「without-sqlite」となっていて、どうも動きません。
ターミナルソフトでは、sqlite3 test.db などと打つと、ちゃんとデータが作成できるのですが。

どうしたものでしょう。
0564nobodyさん2007/05/19(土) 21:40:42ID:???
>>563
PHPにsqliteが組み込まれていない。
yumでphp-slliteいれろ。
0565nobodyさん2007/05/19(土) 21:57:50ID:???
変数の中に表示するデータを次々溜め込んで最後に
exit(変数);
するのって効率悪いの?
0566nobodyさん2007/05/19(土) 22:02:18ID:???
効率悪い

exitのそんな使い方始めてみた
システム出力系はベンチしにくいけどベンチしてみれ
0567nobodyさん2007/05/19(土) 22:14:57ID:???
バッファリング関数じゃダメなん?
0568nobodyさん2007/05/19(土) 22:59:10ID:???
それで何のためにexit使ってんだ?
0569nobodyさん2007/05/19(土) 23:14:38ID:ZssAVHkG
>>564
ありがとう

yumのあと、php.iniに設定は必要ですか?

いろいろ参考にしながら、
extension=pdo.so
extension=pdo_sqlite.so
を追記したけど、phpinfoに変化はありません。
0570nobodyさん2007/05/19(土) 23:38:05ID:???
$str = <<< DOC_END
ほげほげ(300KBぐらい)
DOC_END;
exit($str);
278ms

$str = <<< DOC_END
ほげほげ(300KBぐらい)
DOC_END;
echo $str;
exit;
266ms

echo <<< DOC_END
ほげほげ(300KBぐらい)
DOC_END;
exit;
250ms

exit("エラーメッセージ");
てのよく見るから
正常の時もexitでいいのかなあと思ったのよ
そうは使わないのね サンクス 一番下にしとく
0571nobodyさん2007/05/19(土) 23:41:21ID:jN6au0ie
EOFとかEOMとDOC_ENDとか
いっぱい種類あって何が何かわかんね・・・

どれも一緒と見ておk?
0572nobodyさん2007/05/19(土) 23:44:14ID:???
数えてみるといいよ、無限にあるから
0573nobodyさん2007/05/20(日) 00:01:11ID:???
>>570
なんでexit関数のページ見ないの?
0574nobodyさん2007/05/20(日) 00:03:28ID:???
>>570
まさか1回だけ実行して秒数比較してないよな?
0575nobodyさん2007/05/20(日) 00:26:43ID:s5N306jr
>>572
サンクス
変数みたいに任意につけられる名前なんですね
0576nobodyさん2007/05/20(日) 00:41:14ID:???
ヒアドキュメントって、終端ID行にインデント入れられないのが
違和感ありますよね。
0577nobodyさん2007/05/20(日) 00:49:14ID:???
インデント込みで終端IDつければ?
■ このスレッドは過去ログ倉庫に格納されています