【PHP】下らねぇ質問はここに書き込みやがれ 27
■ このスレッドは過去ログ倉庫に格納されています
00011様
2006/08/23(水) 00:54:52ID:uM5Jzzy0まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0305nobodyさん
2006/08/28(月) 00:51:35ID:???0306nobodyさん
2006/08/28(月) 01:08:47ID:???0308nobodyさん
2006/08/28(月) 03:01:51ID:miwG/swi0309nobodyさん
2006/08/28(月) 03:02:40ID:???効率の悪そうなアルゴリズムしか思いつかないのでもっとスマートな方法がないか
アイディアかヒントを頂ければ
100の申し込みがあって、それぞれの申し込みには10が初期値で1〜20の重み付けが
あります。当選確率は1が一倍で2が二倍…20が20倍です。
DBから各申し込み(内容と重み付けが入っている)をとってくる。
配列か連想配列に入れる。
各申し込みを重み付けの分だけ配列の中に増やす。(ここが効率が悪そう)
そして
$tousen = array_rand($array, 1); で取り出そうかと…
もっと、賢い方法がありそうな気がするのですが、頭のいい方よろしくお願いします。
0310309
2006/08/28(月) 03:03:20ID:e9kKWeu60311nobodyさん
2006/08/28(月) 03:23:02ID:???100程度の入力ならその方法でいいんじゃまいか?最大2000だし。
別な方法でやるなら、重み付けの分だけ当選札を発行して、
そこからrand(1,全当選札の数)で当選番号を決めるのはどうかなぁ
0312nobodyさん
2006/08/28(月) 03:41:05ID:e9kKWeu6深夜なのにレスありがとうございます。
> 100程度の入力ならその方法でいいんじゃまいか?最大2000だし。
すみません。
例なので実際には1万の申し込みや、重みも100などいくかも知れないです。
> 別な方法でやるなら、重み付けの分だけ当選札を発行して、
> そこからrand(1,全当選札の数)で当選番号を決めるのはどうかなぁ
ちょっと理解できたかわからないのですが、こうでしょうか?
$query = 'SELECT COUNT(weight) FROM mousikomi_table';
$wight_count = query($query);
$tousen_bangou = rand(1, $weight_count);
当選番号から、どの申し込みが当たりなのかの処理も賢い方法が思いつかないです…
思いついた賢くない方法は、
配列の添え字に重みをかけて、その番号まではその申し込みの持っている当選番号として
次の添え字に行く。そして、当選番号が出てくるまで同じ処理を繰り返す…
うーん、自分ながら頭が悪いアルゴリズム…
0313309
2006/08/28(月) 03:58:22ID:e9kKWeu6軽く間違えたのでもう一度。
$query = 'SELECT SUM(weight) FROM mousikomi_table';
$wight_count = mysql_query($query);
$tousen_bangou = rand(1, $weight_count[0]);
for ($i=0; $i < count($mousikomi); $i++) {
$total_bangou = $tousen_bangou + (1 * $mousikomi['weight']);
if($tousen_bangou <= $total_bangou) { print "当選した申し込みです。"; last;}
}
forで当選番号が見つかるまで探しつづけるあたりが頭悪い感じが…
0314nobodyさん
2006/08/28(月) 05:25:53ID:???その場合、申し込みテーブル1つで抽選の時だけの工夫だったら
どうやっても速くならないんじゃないかな。
>>311の言ってる方法だと思うけど
当選札テーブルを用意して、申し込みや重みの変動があった都度
当選札を発行して入れておくといいと思う。
>>309が最初に言ってた方法を抽選の時にまとめてじゃなくて
変化があった時に分散する感じ。
もっと頭いい方法あるのかもだけど俺が思いつくのはそのくらい。
0315nobodyさん
2006/08/28(月) 07:27:23ID:???連想配列 10万って大丈夫?
0316nobodyさん
2006/08/28(月) 08:28:29ID:???0317nobodyさん
2006/08/28(月) 08:29:43ID:???<?php
$ar['0']='abc' ;
for($i=0 ; $i<100000 ; $i++){
$ar['index'.$i]="$i" ;
}
?>
俺の環境では大丈夫だった
0318nobodyさん
2006/08/28(月) 08:51:34ID:???ふつうにDBがよくね?
0319nobodyさん
2006/08/28(月) 09:14:23ID:???>>304
マニュアル見て考えてみれ。
http://www.php.net/manual/ja/function.parse-url.php
>>192
亀レスだが、PHP以外の言語をいじったことあるか?
マニュアルに書いてあるTRUEとかFALSEとか戻り値とかの意味わかるか?
多分、おまいは基礎の基礎をすっとばして、いきなり応用に入ろうとしているんだろ。
0320nobodyさん
2006/08/28(月) 09:51:05ID:???0321nobodyさん
2006/08/28(月) 10:07:23ID:8XzpZNhh矩形をたくさん表示させようと思っております
0322nobodyさん
2006/08/28(月) 10:24:25ID:???世の中こんな人もまだまだいるんだなぁとちょっとほっとした。
私は配列。
0324nobodyさん
2006/08/28(月) 11:19:40ID:???if($Cid==$line[1] or $Cid==$line[2] or $Cid==$line[3] or $Cid==$line[4] or
$Cid==$line[5] or $Cid==$line[6] or $Cid==$line[7] or $Cid==$line[8] or.................
$Cid==$line[100]) {
をなんとか一文ですっきりする方法はないのでしょうか?
例えば
if($Cid==$line[1から100]) {
のような感じです。
0326nobodyさん
2006/08/28(月) 11:38:06ID:???0327nobodyさん
2006/08/28(月) 11:44:09ID:???見た目はすっきりと良くなるよ
0328nobodyさん
2006/08/28(月) 12:13:01ID:???for($i=0 ; $i<100 ; $i++){
if($Cid == $line[$i]){
$flag = "hogehoge";
break;
}
}
つーことね。
in_arrayで考えてたから逆に思いつかなかったw
0329nobodyさん
2006/08/28(月) 12:40:13ID:???0332309
2006/08/28(月) 12:55:31ID:tNKhmn4zID変更になりますが…309です。
仮のテーブルを作って早くなるなら作ろうと思います。
申し込みはフィックスされたら変更されないのですが重みは
何回も抽選するのでそのたびに変更されます。
なので重みを先に計算させるのはむずかしそうです…
なんとか分散する方法を考えてみます。
当選番号から元の申し込みの添字を見つける計算アルゴリズムもいいのが
浮かびそうな気がしてきました
0333204
2006/08/28(月) 13:42:22ID:Uc4lvqbTUrlEncode()したURLをhotmailに送るとメール画面ではきちんと表示されてるのに
クリックするとエンコード部分が文字化けしています。
やっぱり直りません。orz
0335nobodyさん
2006/08/28(月) 13:52:23ID:???たとえばこんなの
$sxml=simplexml_load_string($xmlstr) ;
$ar=get_object_vars($sxml) ;
0336nobodyさん
2006/08/28(月) 14:25:31ID:???JpGraphを利用することで簡単に表示できる
しかし、リアルタイム(例:Tickデータを受け取ったら即表示)が
できるのかは不明
他の方法があるかもしれない
それは俺も教えて君だ
0337nobodyさん
2006/08/28(月) 14:45:10ID:???あれだ、幅1px、高さ1pxのGIFを用意して、実際表示させる時に
高さと幅を指定しなおせば、グラフに見えるんじゃないかな?
0338nobodyさん
2006/08/28(月) 14:57:14ID:???と、思ったが陰陽で色分けて横5pxで真ん中に1px書いたgifなら伸ばすだけでOKか。
高さはCSSで調整すればいけそうだな。
0339nobodyさん
2006/08/28(月) 15:26:56ID:???0341nobodyさん
2006/08/28(月) 15:55:40ID:6Eu/aWep0343nobodyさん
2006/08/28(月) 16:15:37ID:???パターンで絞込みたいだけならpreg_grepでいいんだけど、
それ以外の何かフィルタ的な処理をしたい時に使えないんです
0344nobodyさん
2006/08/28(月) 16:29:31ID:???Perlのgrepってパターンしか使ったこと無かったけど、
grep(評価式, 配列)
の評価式ってパターンマッチ以外でもいいのか?
0349nobodyさん
2006/08/28(月) 19:16:03ID:Fg0vDOCrWindowsだと /(半角スラッシュ),UNIXだと \(逆スラッシュ)
と展開されるような。
0350nobodyさん
2006/08/28(月) 19:48:39ID:???0353nobodyさん
2006/08/28(月) 20:00:19ID:???テストするのが面倒なのでマニュアルの定数のページだけ見て答えるが、
DIRECTORY_SEPARATOR じゃまいか?
0355nobodyさん
2006/08/28(月) 20:03:27ID:B31oQAMbねぇ、in_array って何さ? 意地悪しないでいい加減教えろよっ
0357nobodyさん
2006/08/28(月) 21:58:27ID:???何で>>347に聞いてるのか分からんがコレドゾー
つ【http://jp2.php.net/in_array】
0359nobodyさん
2006/08/29(火) 01:35:18ID:???登録ボタンを押したあとINPUTのTEXTの中の文字列をurlencodeするのってどうやればいいんでしょう?
なんか、POSTで文字列を取ってきたら一部漢字が文字化けしちゃうんです。
0363nobodyさん
2006/08/29(火) 02:04:58ID:???0364359
2006/08/29(火) 02:08:11ID:???<input type="text" name="aaa">
<input type="submit" value="OK">
こうなってる奴のOKを押したあと
再度よみこむ前に変換作業などするにはどうしたらいいのか分からなくて。
0365nobodyさん
2006/08/29(火) 02:46:04ID:???どうせ、お前の言ってる文字化けとかいうのは「表\示」とかそんなレベルだろ。
0366359
2006/08/29(火) 03:02:21ID:???をやるとすでに文字化け(?)してるんですよ。
化けるのは
予→?
予定→予定
無→?
無事→無事
無敵→?遵・BR>
こんな感じです。
表示は表\示には化けませんでした。
というか、たぶんそれ以前の問題で
INPUTのtextの値をどうやっていじって変換するのかが分からない状態でして。
0367nobodyさん
2006/08/29(火) 03:03:24ID:???つくづくバカだなお前も。
PHPの勉強をする前に、質問の仕方を勉強しろ。
俺たちはエスパーじゃないから、お前の心の中を読み取ることは出来ない。
0368nobodyさん
2006/08/29(火) 03:10:39ID:???多分、してないんだろう。
0369nobodyさん
2006/08/29(火) 03:12:56ID:???<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
これは書いてるんですけど他にも指定が必要です?
0370nobodyさん
2006/08/29(火) 03:16:27ID:???Winな「メモ帳」で
<?php
phpinfo();
?>
を呼ばれるファイル名で保存してサーバにアップ
呼ぶファイルを呼び出してsubmitすると下のほうにPOSTされた
データが表示されるからどうなってるか確認
0372nobodyさん
2006/08/29(火) 03:37:51ID:???php.ini の mbstring.encoding_translation や mbstring.http_input、mbstring.http_ouput あたりの設定かもな。
0373nobodyさん
2006/08/29(火) 03:45:10ID:???phpinfoを見ると
mbstring.encoding_translation on on
mbstring.http_input auto auto
mbstring.http_output EUC-JP EUC-JP
mbstring.internal_encoding EUC-JP EUC-JP
になってました。
0374nobodyさん
2006/08/29(火) 06:25:04ID:N+TQF1f0$l = "2ch\nhtml\nxml\nphp\nperl";
explode("\n",$l);
$fp = fopen(log.txt , w);
while(!feof($fp)){
fputs($fp , $l[$b]);
$b++;
}
fclose($fp);
こんな風にしてみたんですが、実行すると、「致命的なエラー」が発生してしまいます。
fputs($fp,$l[$b]);
の変がおかしいと思うのですが、原因がわかりません。
どなたか教えてください。、
0376nobodyさん
2006/08/29(火) 06:48:28ID:???0377nobodyさん
2006/08/29(火) 06:56:09ID:???このループは読み込む時に使う
foreachをexplodeで出来た配列に使うべし
0378nobodyさん
2006/08/29(火) 06:59:08ID:???$l = "2ch\nhtml\nxml\nphp\nperl";
$fp = fopen('log.txt', 'w');
fputs($fp, $l);
fclose($fp);
でよくね?
0379nobodyさん
2006/08/29(火) 07:11:38ID:???入力文字が短すぎて文字コードの自動判定に失敗している
入力文字コードを変換する必要はまずないので
mbstring.encoding_translation を offにしる
php.iniも.htaccessもいじれないならformの一番最初に判定用のダミーデータを入れる
<input type="hidden" name="autodetect" value="美乳">
0381nobodyさん
2006/08/29(火) 10:22:40ID:N+TQF1f0>>375
え。、、私explode関数すごい変な思い違いしてたかもしれないです。
$lを\nで区切ってくれるような関数だった気が・・・
>>376
やってみたんですが・・・
>>377
そうなんですか
すいません無知で><
>>378
確かにそれで良いのですが、最終的にフォームから送信された名前とコメントを結合して云々候みたいな
ことがしたいので、できればexplode関数使いたいのです。
0382nobodyさん
2006/08/29(火) 10:31:05ID:???explodeは確かに区切る関数だが、区切った結果は戻り値で返る。
× explode("\n", $l); // $lは何も変化しない
○ $l = explode("\n", $l); //$lは改行ごとに分割された配列に変わる
0383nobodyさん
2006/08/29(火) 10:34:57ID:???あとちなみに、「致命的エラー」になるのはwhile()の条件のせいだと思う。
それだと絶対に終了できないので永久ループになる。
0384nobodyさん
2006/08/29(火) 10:37:17ID:N+TQF1f0>>375さん、ありがとうございます><
解決しました^^
ありがとうございます
0386nobodyさん
2006/08/29(火) 11:22:48ID:???たとえば3行分のデータがあるとして、
1.こぶた
2.ろば
3.ちんぱんぢー
ある指定した行を消す場合はどのようにしたらいいのでしょうか?
0387nobodyさん
2006/08/29(火) 11:26:20ID:???0389nobodyさん
2006/08/29(火) 12:07:31ID:???$fp = fopen("log.txt" , "w");
文字列は引用符でくくれ
お前にはerror_reporting(E_ALL);を進める
0390nobodyさん
2006/08/29(火) 12:34:04ID:OWMs78pdなどでインストールした場合、php を make した時の configure オプションってどうやって調べればいいのでしょうか?
とある理由により、PHPをバージョンダウンさせたいのですが、既存のPHPがどのようなconfigureオプションでmakeされたのかがわからないので、どうやって調べたらいいのかなぁ、、、と彷徨っているところです...
0391nobodyさん
2006/08/29(火) 12:38:38ID:K0UosIpnphpinfo();
0393nobodyさん
2006/08/29(火) 13:00:47ID:???0396nobodyさん
2006/08/29(火) 13:34:47ID:???別に使えない命令じゃないのに避けてしまいそうなオレがいる
0397nobodyさん
2006/08/29(火) 14:32:44ID:???<input type="checkbox" name="fC[]" value="hoge"> hoge <br>
<input type="checkbox" name="fC[]" value="foo"> foo <br>
<input type="checkbox" name="fC[]" value="bar"> bar <br>
<input type="submit" value="OK">
</form>
でfc[]を$_POSTで取得したいのですが、
$a = $_POST[fc[]]では取得できませんでした。
どなたかご教授お願いいたします。
0399nobodyさん
2006/08/29(火) 14:49:10ID:???0403nobodyさん
2006/08/29(火) 14:55:17ID:jUXXd5I9extract($_POST)と展開して行いたいと思っていますがセキュリティ的に見て危ない点とかありますでしょうか??
0404397
2006/08/29(火) 14:56:33ID:???■ このスレッドは過去ログ倉庫に格納されています