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

【PHP】下らねぇ質問はID出して書き込みやがれ 109

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/07/28(木) 06:53:37.45ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 108
http://hibari.2ch.net/test/read.cgi/php/1309599473/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0099nobodyさん2011/07/31(日) 21:09:09.71ID:???
お前はこのスレに何時間もいるのかよw
0100nobodyさん2011/07/31(日) 21:13:46.51ID:???
俺風呂はシャワー10分、入浴5分ぐらい
温泉行ったらぬるーい露天風呂に友人と30分ぐらい使ってる
0101nobodyさん2011/07/31(日) 21:43:52.43ID:???
昔親から隠れてゲームするために、何時間も風呂に入ってたことあったな〜
0102nobodyさん2011/07/31(日) 21:55:42.22ID:???
お風呂入ると気持ちよくなってオシッコ出ちゃうよね
0103nobodyさん2011/07/31(日) 23:31:59.71ID:WZb+hQkO
【OS名】Mac OS X 10.4
【PHPのバージョン】5.3
【連携ソフトウェア】
【質問内容】配列の中の最小値はmin()で取得できると思うのですが、
配列の中の最小値の添字番号を取得する方法はありますか?
0104nobodyさん2011/07/31(日) 23:32:28.94ID:???
>>103
min(array_keys($array));
0105nobodyさん2011/07/31(日) 23:43:36.46ID:+1qkyEQe
>>104
それは「配列の添字番号の最小値」じゃないか?
0106nobodyさん2011/08/01(月) 00:56:51.80ID:???
>>103
<?php
$array = range(0, 10);
shuffle($array);
echo var_export($array, true), PHP_EOL;

echo array_search(min($array), $array), PHP_EOL; // 非破壊的
asort($array); echo key($array), PHP_EOL; // 破壊的
0107nobodyさん2011/08/01(月) 01:30:20.39ID:???
お風呂入ると気持ちよくなってオ○ニーしちゃうよね
0108nobodyさん2011/08/01(月) 01:57:25.84ID:r8kgX+8j
curl_multi_*のURL登録等の準備が完了し通信開始〜全ハンドル通信終了までの流れについてです
今まではcurl_multi_add_handleでハンドルをマルチハンドルに追加した後
do{curl_multi_exec($mh,$running);}while($running);で待っていればいいと思っていたのですが
公式見るとまるで違う処理をしていました
http://php.net/manual/ja/function.curl-multi-exec.php の例の// ハンドルを実行します〜// ハンドルを閉じますまで

curl_multi_execの戻り値のCURLM_CALL_MULTI_PERFORMや
何故一度目のwhileが終わった後二重のwhileをしているのか
どのタイミングでどこに処理が行っているのかがまるで読めません

定義済み定数のページを見ても(英語版にも)CURLM_CALL_MULTI_PERFORMやCURLM_OKが
具体的にどのような状態を表すのかが読み取れませんでした。というか書いてありませんでした
http://www.php.net/manual/ja/curl.constants.php

そして検索しても、このサンプルを丸コピしているサンプルサイトしか引っかかりませんでした。

// ハンドルを実行します
01:do{
02: $mrc = curl_multi_exec($mh, $active);
03:}while($mrc == CURLM_CALL_MULTI_PERFORM);
04:while($active && $mrc == CURLM_OK) {
05: if(curl_multi_select($mh) != -1) {
06:  do{
07:   $mrc = curl_multi_exec($mh, $active);
08:  } while ($mrc == CURLM_CALL_MULTI_PERFORM);
09: }
10:}
この各行がどのような流れで処理されるのかの解説をお願いできますでしょうか
特に3行目、4行目、8行目のループが何を待っているのか、5行目のifは何を分岐しているのか・・・
0109nobodyさん2011/08/01(月) 02:08:55.98ID:???
>>108
ぐぐったら海外サイトにいくつかあったよ
http://net.tutsplus.com/tutorials/php/techniques-and-resources-for-mastering-curl/
http://curl.haxx.se/mail/lib-2008-06/0001.html
0110nobodyさん2011/08/01(月) 03:51:04.53ID:2XW3ucDq
curlでpostした場合、自分でContent-lengthを付けなくても勝手に付きますよね?
0111nobodyさん2011/08/01(月) 03:55:43.58ID:???
>>110
試せばわかるだろ
0112nobodyさん2011/08/01(月) 04:15:13.94ID:???
>>110
付かないとHTTP通信が成り立たないから付く
0113nobodyさん2011/08/01(月) 05:13:48.22ID:???
>>108
PHPのソースとcURLのAPIを読んだ方がいい
ざっと読んだがこんな感じじゃないだろうか

1-3: 通信準備
4: 前回の curl_multi_exec() の結果が正常、かつ実行中のハンドル数が1以上なら
5: 読み込みの準備が完了まで無限ループ
6-8: 読み込み実行、終わったら4に戻る
0114nobodyさん2011/08/01(月) 09:29:12.01ID:Nj6qDJQl
アップロードされた画像を
$binary = fread(fopen($_FILES['upfile']['tmp_name'], "r"), filesize($_FILES['upfile']['tmp_name']));
$file = base64_encode($binary)
とエンコードをしてMySQLに保存するコードを作りました

この画像を今まで表示させるのに
<?php
header("Content-type: image/png");
echo = base64_decode("mysql出力");
?>
とやってたのですが訳あって"./img/img_user/".$user_name."png"
という風にMySQLとは別にサーバーに保存しようと思ってるのですが
move_uploaded_fileなどを使って「デコードされた文字列をpngとして名前を付けて保存する」やり方に悩まされています
もし解決方法があったらお願いします
0115nobodyさん2011/08/01(月) 09:36:17.53ID:???
$fileを保存すればいいんじゃねーの
デコードする意味が俺には分からんけど。
0116nobodyさん2011/08/01(月) 09:52:02.44ID:???
> 訳あって
ってあるから訳があるんじゃねーの?
画像うpろだみたいに引き出す時だけ一定時間保存するとか
0117nobodyさん2011/08/01(月) 10:37:51.60ID:???
そりゃ訳があるなら訳がある訳で
0118nobodyさん2011/08/01(月) 10:50:47.70ID:???
何で悩んでるのかがわからん
こうしたいけど、こうなってしまう、とか事例無いかね
01191142011/08/01(月) 11:16:15.45ID:Nj6qDJQl
すみません、自分なりに
$hoge = base64_decode("mysql出力(例:R0lGODlhAQAAAAAALAAABAAEAAAICRAEAOw==)");
$user_name = "hoge122";
if(move_uploaded_file($hoge, "./img/img_user/".$user_name.".png")) {
echo "画像を復帰させました。";
}
とやってみたりしたんですがどうもうまくいかず
デコードされた文字列をpngとして名前を付けて保存するやり方はどの本に載ってなかったので
0120nobodyさん2011/08/01(月) 11:32:50.99ID:???
fread使ってるみたいだし、普通にfwrite()じゃだめかね?
0121nobodyさん2011/08/01(月) 12:32:10.24ID:???
質問です
$str = "あ";
$str = mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8');

としても期待通りの結果を得る事ができません。
期待は$amp;#12354;ですが「あ」が得られます。

おそらくphp.iniのを見直す必要があると思うのですが、それを含めどうすれば期待通り得れる様になるのでしょうか?

PHP5.3.6です。
0122nobodyさん2011/08/01(月) 12:32:51.00ID:???
誤)期待は$amp;#12354;ですが「あ」が得られます。
正)期待は?ですが「あ」が得られます。
0123nobodyさん2011/08/01(月) 12:34:36.65ID:???
アンドが出ないようで。
0124nobodyさん2011/08/01(月) 12:38:31.95ID:???
IDも出ないようで
0125nobodyさん2011/08/01(月) 12:54:57.17ID:???
&
0126nobodyさん2011/08/01(月) 13:04:00.34ID:???
>>119
move_uploaded_fileでファイルを移そうとするからだめなんじゃ?
01271142011/08/01(月) 13:13:31.94ID:Nj6qDJQl
>>120>>126
出来ました!ありがとうございます!!
何日間も悩んでたんですが、こんな簡単なことだったとは
ここに来て正解でした。本当にありがとうございます!!
0128nobodyさん2011/08/01(月) 22:17:14.90ID:7/D+jIWO
くだらねえ、というか変な質問なんですが、PHPで作られてるゲームを教えてもらえませんか。
ちょっと仕事でそう言うのに関わりそうなんでどうゆうのがあるのかイメージだけでも掴んでおきたいんですわ
個人でも企業でも構わないです
01291032011/08/01(月) 22:22:55.11ID:WocIZ6af
>>106
ありがとうございました!
0130nobodyさん2011/08/01(月) 22:24:10.13ID:WocIZ6af
最小値はmin関数で取り出せますが、
2番目に小さい値を取り出すにはどうしたらいいでしょうか?
0131nobodyさん2011/08/01(月) 22:53:39.03ID:???
PHPでゲームとな?
グーって送信したら「負けました」って返ってくるようなのとかしか思いつかん
0132nobodyさん2011/08/01(月) 23:08:24.46ID:???
結局はそれの応用だろ
0133nobodyさん2011/08/01(月) 23:08:39.50ID:???
ブラウザ三国志ってPHPじゃなかったかな
0134nobodyさん2011/08/01(月) 23:11:25.13ID:???
ブラウザゲーム PHPでぐぐれ
0135nobodyさん2011/08/01(月) 23:12:54.63ID:???
>>130
ソートすれば何番目でも取り出し放題
0136nobodyさん2011/08/01(月) 23:14:11.90ID:???
>>130
<?php
$array = range(0, 10);
shuffle($array);
echo var_export($array, true), PHP_EOL;

$values = array_values($array);
$keys = array_keys($array);
array_multisort($values, SORT_DESC, SORT_NUMERIC, $keys);
echo implode(' > ', $keys), PHP_EOL;
0137nobodyさん2011/08/01(月) 23:17:21.62ID:???
PHPでゲーム作ったとしてもゲームってよべる代物じゃないんじゃね?
送信→結果返ってくる→送信って物凄い退屈になりそうだ
ドラクエの動作する度に読み込みしなきゃならんという
0138nobodyさん2011/08/01(月) 23:19:07.16ID:???
>>137
いつの時代のゲームだよ。
PHP+JavaScriptで結構いい感じのができるよ。
0139nobodyさん2011/08/02(火) 00:38:18.62ID:HmxmiA4/
クラス内の関数をcall_user_funcで呼ぶにはどう指定したらいいでしょうか?
call_user_func($this->'hoge'); // ?

private function hoge()
{

}
0140nobodyさん2011/08/02(火) 00:39:56.79ID:???
PHP+AJAXを利用してチャットの仕組みを応用すれば、
それほど難しくないでしょ。
0141nobodyさん2011/08/02(火) 00:42:42.94ID:???
>>139
http://php.net/manual/ja/function.call-user-func.php
>さらに、オブジェクトのインスタンスのクラスメソッドをコールするには、 array($objectinstance, $methodname) をこのパラメータに渡します。
書いてあるまんま

privateを呼ぶならリフレクション使わないと無理だと思うよ
0142nobodyさん2011/08/02(火) 00:45:02.22ID:???
>>139
ttp://php.net/manual/en/function.call-user-func.php#example-4339
0143nobodyさん2011/08/02(火) 00:50:29.97ID:HmxmiA4/
>>141-142
ありがとうこざいますm(__)m
0144nobodyさん2011/08/02(火) 01:15:53.15ID:???
call_user_funcを使うのは設計が悪い証拠
0145nobodyさん2011/08/02(火) 01:21:48.12ID:???
>>144
禿同
0146nobodyさん2011/08/02(火) 04:13:18.97ID:???

$matches = array();
preg_match($regex, $url, $matches);

最初の初期化って必要?
0147nobodyさん2011/08/02(火) 04:20:20.72ID:???
上書きされるので必要ない
0148nobodyさん2011/08/02(火) 05:57:50.94ID:pX4Rbkp4
前スレでSMTP認証ができずメール送れないって書き込んんだのですが、
mb_send_mailをsendmailまねーるでSMTP認証すると送れました。
質問します。画像やpdfを添付ってどうやってやるのですか?
0149nobodyさん2011/08/02(火) 09:08:19.40ID:???
sendmailまねーるって何だよ
PHPに関係あんのかそれ
0150nobodyさん2011/08/02(火) 09:12:30.68ID:???
>>148
その時にされたレスにあるクラス使えば出来るよ
0151nobodyさん2011/08/02(火) 18:18:20.03ID:pX4Rbkp4
>>149
sendまね〜る(sendmane.exe)の使い方
http://homepage1.nifty.com/yito/anhttpd/faq/sendmane.html
>>150
やってみます

0152nobodyさん2011/08/02(火) 21:10:35.32ID:???
てst
0153nobodyさん2011/08/02(火) 21:11:39.21ID:???
sendmailまねーるは使うな
どうしてもWindowsでやりたいならxmailにしろ
0154nobodyさん2011/08/02(火) 23:07:29.75ID:pX4Rbkp4
>>153
sendまね〜るを非推奨は何か理由があるのですか?
0155nobodyさん2011/08/02(火) 23:47:13.83ID:???
sendmailまねーるって何だよ
PHPに関係あんのかそれ
0156nobodyさん2011/08/02(火) 23:48:59.76ID:???
またいつものどっかの記事を鵜呑みにしちゃった使うな厨か
0157nobodyさん2011/08/03(水) 00:51:46.47ID:???
そんなに使いたいなら使えばいい
0158nobodyさん2011/08/03(水) 01:59:01.60ID:???
PHPは使うな
どうしてもWindowsでやりたいならAjaxにしろ
0159nobodyさん2011/08/03(水) 10:48:11.05ID:???
PEAR入れりゃ済むことをわざわざ別の何かを入れるのは
どうなんだ。それが本当に必要ならともかく、
よくわかってないから入れてみました、じゃあなあ
0160nobodyさん2011/08/03(水) 10:51:49.49ID:???
解決方法は別になんでも良いだろ
回答もらっておきながら結果なりを報告せずに別の質問しに来るあたりクズだと思うけど
0161nobodyさん2011/08/03(水) 12:15:08.13ID:???
なんでこんなスレにいちいち報告に来なきゃならないんだ
お前はお礼を言ってもらいたくて回答してんのか
0162nobodyさん2011/08/03(水) 12:16:18.34ID:???
「〜は使うな
どうしても〜で使いたいなら〜にしろ」
はコピペか
0163nobodyさん2011/08/03(水) 12:19:36.66ID:???
なんでこんなスレにいちいち回答しなくちゃならないんだ
おまえは回答が欲しくて質問してんのか
0164nobodyさん2011/08/03(水) 12:26:57.45ID:???
>>161
そんな風だからお前はこのスレでしか質問させてもらえないんだよ?
0165nobodyさん2011/08/03(水) 12:47:56.43ID:???
まあどうせパスが通って無くてインストールできなかったんだろうけど
その程度の事もわからなくて見当違いの方向に進んで
見当違いの質問をするやつもどうかと
0166nobodyさん2011/08/03(水) 17:21:28.04ID:???
>>164
このスレだけで質問できれば充分なんだけど?
0167nobodyさん2011/08/03(水) 17:23:13.01ID:???
PEARの使い方わからないからってそんなイライラすんなよ
0168nobodyさん2011/08/03(水) 17:33:34.82ID:???
>>160
同意
0169nobodyさん2011/08/03(水) 18:55:00.77ID:???
>>161
同意
0170nobodyさん2011/08/03(水) 21:30:38.04ID:???
>>168
不同意
0171nobodyさん2011/08/03(水) 23:48:52.38ID:???
不同意ね…
0172nobodyさん2011/08/04(木) 05:35:26.09ID:lnwKvGgA
なんかまともに機能してないのかこのスレ
0173nobodyさん2011/08/04(木) 08:51:10.70ID:???
粘着君が荒らしてるようだな
0174nobodyさん2011/08/04(木) 09:03:04.88ID:???
まともな質問者にはまともな回答がついてるじゃない
0175nobodyさん2011/08/04(木) 10:24:57.92ID:x+2SSW45
配列の初期化について教えて下さい。

error_reporting(E_ALL);
$a = array();
for($i=0;$i<=10;$i++) {
print "a($i) = $a[$i]\n";
}

上記のようなスクリプトを書くと、
Notice: Undefined offset: 0 in /home/name/tmp/a.php on line 5
a(0) =

Notice: Undefined offset: 10 in /home/name/tmp/a.php on line 5
a(10) =
という警告が出ます。

$配列=array(); で、空の配列で初期化できるとググって調べたサイトには
書かれてるのですが、これは正しいのでしょうか?
ちなみに $a = array(); を$a = NULL; で置き換えると警告が出ず、意図した通り動作します。
どちらが正しいのでしょうか?
0176nobodyさん2011/08/04(木) 10:44:12.39ID:???
>>175
$a[0] や $a[10] は初期化されてないでしょ?
0177nobodyさん2011/08/04(木) 10:48:58.81ID:???
>>175
> $a = NULL; で置き換えると警告が出ず、意図した通り動作します

意図したとおりに動作するならそれでいいじゃん
0178nobodyさん2011/08/04(木) 10:53:32.66ID:???
揚げ足取りはスルーしてね
0179nobodyさん2011/08/04(木) 10:59:25.37ID:???
空の配列へ初期化ですから Notice: Undefined offsetが出るのが正しいですよね?。
nullの場合は nullへの配列アクセスがnull返してるだけですので、意味が違います。
どちらが正しいということではありません。

01801752011/08/04(木) 11:21:24.21ID:???
>>176
>>178-179

回答ありがとうございます。
array()で「未定義の状態に」初期化されるということだったんですね。

借りてるサーバーでphp.iniの設定が変わったのか、やたらこの警告が
出るようになったので、error_reporting等でエラー制御してもいいんですが、
放置しておくのも気持ち悪いので、配列を空白または0として認識するよう初期化する
方法を検証してたんですよね。
配列のサイズは可変なので、array_fill等を使わずに検証してますが、
>>179さんの説明見る限りでは、= NULL; では意図した初期化になってない気がしますね。
0181nobodyさん2011/08/04(木) 11:31:18.07ID:???
気持ち悪いのなら、その部分を直すべき。
print "a($i) = ". (isset($a[$i])?:"") ."\n"; とか
0182nobodyさん2011/08/04(木) 11:34:10.08ID:???
クラスにしちゃうのも良いかもね
0183nobodyさん2011/08/04(木) 11:35:39.13ID:???
なんでもかんでもクラスといえばいいと思ってんの?
0184nobodyさん2011/08/04(木) 11:38:25.15ID:???
そうだねAjaxだね
0185nobodyさん2011/08/04(木) 12:42:21.82ID:???
自分も日曜鯖管・プログラマーで、Noticeエラーで悩まされて
error_reportingでとりあえず対処してる。
PHPで食べてるプロの方々は、どう対処してるんでしょ?
鯖の設定もクライアントによって様々だろうし・・・
error_reporting(1)にしてるけど、問題ないのか自分としても自信がないし
0186nobodyさん2011/08/04(木) 12:44:08.88ID:???
Noticeの対処するだけ。
とりあえずって自分で言ってるから、分かってるんだとは思うけど。
01871752011/08/04(木) 13:20:29.10ID:???
>>181

うーん。サイズが可変である以上は、やはりスクリプト中で毎回
変数をチェックするしかないですかね。

>>182
クラスでできるもんなんですか?

>>185
私も同じです。
error_reportingでの対処で問題ないか自信がないので初期化を検討してます。
0188nobodyさん2011/08/04(木) 13:28:13.82ID:???
少なくとも今からコード書くんであればerror_reportingで対処するのはどうかと思う
0189nobodyさん2011/08/04(木) 13:28:17.87ID:???
Noticeなら別にerror_reportingでも問題はない
0190nobodyさん2011/08/04(木) 13:39:30.10ID:???
>>187
http://php.net/manual/ja/class.arrayaccess.php
この辺使えばできるんじゃない?使った事ないけど
0191nobodyさん2011/08/04(木) 13:41:46.56ID:???
結局「Notice: Undefined offset」が出るようなプログラムに問題があるのは明らかだけど、
既存のプログラムを手直ししてられないならerror_reportingしかないんじゃない?
Noticeが出る場所が少ないんなら手直しすべきだなぁ
0192nobodyさん2011/08/04(木) 13:49:13.03ID:???
開発以外でエラー表示してんの?
てか定数で指定しろよ
E_ERROR=1ってWARNINGまで抑制してるんじゃないの
0193nobodyさん2011/08/04(木) 13:54:00.62ID:???
http://midilin.sakura.ne.jp/midilin/php/ppblog/?UID=1170059219
「また、PHPなどで、実行する場合は、SETと、本SQLの2本を同時実行できないっぽい・・」
とありますが出来る方法をご存知の方いらっしゃいましたら教えてください・・・
0194nobodyさん2011/08/04(木) 13:57:16.06ID:???
>>193
>>1
0195nobodyさん2011/08/04(木) 14:11:49.21ID:???
Noticeエラーについてググると、確かに出ないようにプログラムを組むべきとあるのですが、
方法論というか考え方がわかっていなくて・・・
>>175はエラーがでるのは明らかでわかるのですが、
たとえば条件分岐していて、値が入っている時と入っていない時がある場合に
issetで判定しようとするときにもでてたような記憶があるのですが、
そうした場合の初期化はあらかじめ全て0などの値をいれて初期化しておくべきなのでしょうか?
0196nobodyさん2011/08/04(木) 14:13:43.33ID:???
試してから言えよ
0197nobodyさん2011/08/04(木) 14:18:13.81ID:???
isset、is_null、array_key_exists辺りをよく読みなおした方が良い気がする
01981752011/08/04(木) 15:05:45.99ID:???
>>188-189,>>191

ありがとうございます。
一応、地道に警告出ないように書きなおします。

>>190

ありがとうございます。
こちらも試してみます。

>>195-197

試してみたところ、issetでは警告でないようですね。
is_nullでは警告が出ました。
0199nobodyさん2011/08/04(木) 19:14:55.20ID:???
preg_replace ()の $pattern句は普通の正規表現は受付ないのか?
バカヤロー
■ このスレッドは過去ログ倉庫に格納されています