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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
05815782012/03/13(火) 07:31:55.39ID:???
性能悪いPCでまわしたら0.05秒差がついた
パフォーマンス云々いうほどのものではないのにはかわりないが・・・

$start = microtime(true);
$a = 1;
for ($i = 0; $i < 1000000; $i++) {
if ($a === $i) {}
}
echo microtime(true) - $start;
0582nobodyさん2012/03/13(火) 08:01:05.73ID:???
>>580
オブジェクトでしょ?
>>581
1回あたり0.00000005秒の違いか
552の限界までパフォーマンスを追及する姿はかっこいいね!
0583nobodyさん2012/03/13(火) 08:22:23.41ID:???
型の違う$a = '1'での比較はどうだったのかと一応突っ込んでおくか
0584nobodyさん2012/03/13(火) 08:33:01.85ID:???
>>583
やるね
0585nobodyさん2012/03/13(火) 08:38:32.12ID:???
2倍と言ったら聞こえはいい
0586nobodyさん2012/03/13(火) 09:38:54.23ID:???
パフォーマンス云々の問題にすり替えるなよ
0587nobodyさん2012/03/13(火) 09:58:01.86ID:???
>>571
ほれみろWindows+XAMPPしか使ってこなかったろ
今すぐ仮想マシンを用意してubuntuでもdebianでも何でもいいからいれろ
0588nobodyさん2012/03/13(火) 09:58:58.13ID:???
>>578
速度のために===を使う奴はいねえよ
0589nobodyさん2012/03/13(火) 10:18:22.84ID:???
そもそも === が必要になることがこの言語のいびつさを物語っている
0590nobodyさん2012/03/13(火) 10:22:22.43ID:???
== 初心者向け
=== ベテラン向け
0591nobodyさん2012/03/13(火) 10:27:23.20ID:???
== ベテラン向け
=== 初心者向け
0592nobodyさん2012/03/13(火) 10:36:53.94ID:???
>>588
話の流れを見ろよ
0593nobodyさん2012/03/13(火) 10:38:07.99ID:???
必要な場面で必要なもの使えばいいだけやん
議論することでもなんでもないが

ちなみに===演算子はJavaScriptにもある
0594nobodyさん2012/03/13(火) 10:43:18.63ID:???
最初から===を使っておけば型の比較によるバグは起こらない
==を使うのは初心者だけにしておけ
0595nobodyさん2012/03/13(火) 10:57:32.85ID:???
>ちなみに===演算子はJavaScriptにもある
インタプリタにはほとんどある
もしくはそれに類する関数とか(JavaやC#でいうString.equalsのようなもの)
0596nobodyさん2012/03/13(火) 11:15:38.43ID:???
一歩上を目指したい人の為の使うなシリーズ

・外部サイトにアクセスするときfile_get_contentsは使うな
・比較に==は使うな
・エイリアスは使うな
・非推奨関数は使うな
・XAMPPは使うな
0597nobodyさん2012/03/13(火) 11:32:25.71ID:???
記述速度もそうだし、便利だから使えばいいじゃん。
問題はパフォーマンスにもそんな差が出ないとわかったところで
使う上ではちゃんと仕様を把握すればいいじゃんって話じゃん。
PHPerがくそだくそだって言われる最たるところは、ちゃんと仕様や内容を
把握した上でスクリプトくまねーところだろ。

>>581
明示的に一度==のときにstringで放り込んでから比較するとどーなる?
0598nobodyさん2012/03/13(火) 11:44:39.05ID:???
>>596
基礎からやりなおしてね
0599nobodyさん2012/03/13(火) 11:52:56.52ID:???
>>598による初心者講座

・file_get_contents推進します。効率なんて気にしてはいけません。UAもクッキーも送信できるのでおすすめ。
・比較に==をジャンジャン使いましょう。型の比較、特に""とnullの比較なんて気にしてはいけません
・エイリアスの使用を広めてあげましょう。自分が好きな関数名で書くのがいいですよ!
・非推奨関数なんて気にせず使いましょう。皆が使えば怖くない!
・XAMPPを積極的に導入しましょう!開発環境に時間を費やしてはいけません。本番と同じものを用意するのはドMがやる作業です。
0600nobodyさん2012/03/13(火) 12:05:16.21ID:???
必死
0601nobodyさん2012/03/13(火) 12:07:08.63ID:???
さりげなくfile_get_contents追加すんな
0602nobodyさん2012/03/13(火) 12:44:20.12ID:???
なんでfile_get_contentsいかんの?
0603nobodyさん2012/03/13(火) 12:58:23.04ID:???
curlのほうがパフォーマンス良&高機能
0604nobodyさん2012/03/13(火) 12:59:03.22ID:???
file_get_contntsは機能が弱いのにcurlより遅い
0605nobodyさん2012/03/13(火) 13:09:30.91ID:???
strpos($s, $c) == false
こう書いちゃう人いそうだな!
0606nobodyさん2012/03/13(火) 13:11:07.15ID:???
�d、そうか。パスワードとかクッキー使って相手にログインして、って
時にはcurl使ってるけど、ただ単に公開のhtmlとか取ってくる時は
file_get_contents使ってるわ。
0607nobodyさん2012/03/13(火) 13:35:22.69ID:???
ローカルのファイル丸ごと飲む以外にfile_get_contents使う人なんているんですか。
0608nobodyさん2012/03/13(火) 13:38:34.99ID:???
phpでパフォーマンスうんぬんはナンセンス。
パフォーマンスなら別言語をどうぞ。
0609nobodyさん2012/03/13(火) 13:54:00.73ID:???
http://net-beta.net/ubench/
みたいなのは、ほとんどただの自己満足に近い差しかないけどさ、
URLからの読込みのような部分は、大きな意味があるよ。遅いんだからさ。
0610nobodyさん2012/03/13(火) 14:12:03.48ID:lpLFUoKU
windows7を使って以下のようにcmdからphpを起動しています
cmd.exe /k C:\php\php.exe "C:\phpファイル.php"
この状態で、コマンドプロンプトからテキスト入力を受け取るにはどうしたらよいのでしょうか。

"C:\phpファイル.php"のコードを実行させつつ、キーボードから入力された値をscanf的な関数で取得させたいので
php -aで使える対話シェルはちょっと違います。
0611nobodyさん2012/03/13(火) 14:21:46.66ID:???
>>610
標準入力 PHPでググよろしね。
Linuxがどうとか出てくるかもせんけど、Winでも同じあるね。
0612nobodyさん2012/03/13(火) 14:30:50.20ID:???
fgets(STDIN);
0613498=523=5252012/03/13(火) 15:24:54.81ID:mq2kKsmo
>>550
>剰余の計算で===とかw
どのへんが面白いんですか。

>>551
>いくつかの突っ込みどころの中でそれを選んだ>>550はすごいな
ほかにどんな突っ込みどころがあります?

>>554
>===ではなくて ==と書きたいこともあるだろう?
ないですねぇ。

「==」って書いたら、後で見直した時に
何か理由があるのか単なる書き間違いなのか、考えなくてはいけないので面倒です。

同じ理由で、変数等の展開が不要な文字列のクォーテーションは必ずシングルで、
必要な場合だけダブルを使っています。

読みにくいので、文字列の中に変数を入れること自体あまりせずに sprintf を
使うことが多いですけどね。
0614498=523=5252012/03/13(火) 15:28:36.89ID:mq2kKsmo
>>608
>phpでパフォーマンスうんぬんはナンセンス。

ですよね。
十分速いし、遅い原因は大抵、DBや外部要因やPHPとは関係のないプログラミング技術の問題ですから。
まぁ、大きなフレームワークはキャッシュを使わないと結構遅いですが。。
0615nobodyさん2012/03/13(火) 15:28:37.33ID:???
>>613
そうですか。
0616498=523=5252012/03/13(火) 15:35:11.51ID:mq2kKsmo
>>590 >>591
== 「===」の存在(またはデメリット)を知らない人向け、または「=」1文字を入力する時間を惜しむ超絶緊急事態
=== 上記以外の人向け
0617nobodyさん2012/03/13(火) 15:35:46.84ID:???
サンデープログラマとか自営とかなら>>613みたいな考えでいいんじゃね?
0618nobodyさん2012/03/13(火) 15:36:43.78ID:AVn4z6l2
データベースから画象を生成しているのですが、
生成できなかったときの事を考慮して

if(画象が存在していたら){
echo 画象;
}

という処理が妥当ですか?

他に何か良い方法はないでしょうか。
0619nobodyさん2012/03/13(火) 15:38:10.38ID:???
デフォルトで遅いからパフォーマンスは気にしなくていいよ。
0620nobodyさん2012/03/13(火) 15:38:36.72ID:???
>>617
え?
0621nobodyさん2012/03/13(火) 15:39:21.37ID:???
うちのデータベースでは画像生成できないからなぁ
0622nobodyさん2012/03/13(火) 15:41:15.50ID:???
>>618
こんな誤字初めて見た
0623nobodyさん2012/03/13(火) 15:42:18.26ID:???
生成できなかったらダミーの別の画像出すだろ
0624nobodyさん2012/03/13(火) 15:43:20.56ID:???
try{
// 画像生成
}catch (e Exception){
exec('shutdown -h now');
exit;
}
0625nobodyさん2012/03/13(火) 15:43:29.07ID:???
遅いので、ちょっとの工夫で数倍早くなることもあります。

>>618
無いとき、どうしたいのですか?
あと、象さんは違うと思います。
0626nobodyさん2012/03/13(火) 15:49:44.78ID:???
>>620
えっ?

可読性を高める為に
コーディングルールとかあるだろ?
0627nobodyさん2012/03/13(火) 15:51:10.74ID:???
>>616
つまり498===523===525ということか
0628nobodyさん2012/03/13(火) 15:51:33.84ID:???
なんかCスレのQZみたいな人がいるなぁ
0629nobodyさん2012/03/13(火) 15:55:20.92ID:???
他の板の住人の事を堂々と言える人って…
0630nobodyさん2012/03/13(火) 15:58:20.53ID:???
>>626
可読性のために、提供されている演算子を捨てろと
0631(498===523===525)===(498=523=525)2012/03/13(火) 16:01:34.11ID:mq2kKsmo
>>627
素敵。
0632nobodyさん2012/03/13(火) 16:04:19.92ID:AVn4z6l2
>>625
無いときは非表示で。
象さんは、今初めて気が付きました。

今、開発中のソース見直してみたら
"画象をアップロードしてください"とか
"画象が挿入されていません!"とか
いたるところがパオーン

0633(498===523===525)===(498=523=525)2012/03/13(火) 16:07:55.10ID:mq2kKsmo
>>617 >>626
んー、コーディングルールがあるなら、「==」なんて使えないでしょうし、
クォーテーションの使い方まで定めてコーディングルールにすることあるかな。
0634nobodyさん2012/03/13(火) 16:07:56.08ID:???
>>626
可読性を高めるなら==なんて使わない
0635nobodyさん2012/03/13(火) 16:08:58.93ID:???
>>627
なげえw
0636nobodyさん2012/03/13(火) 16:11:15.23ID:???
>>632
非表示って、呼びだしてる側は<IMG SRC="〜 使ってんじゃないの?
画像だけ表示してるならまあ間に合うか。
0637(498===523===525)===(498=523=525)2012/03/13(火) 16:12:59.15ID:mq2kKsmo
>>634
同意。
===は==よりも、パッと見で=と区別しやすいところ。意外と重要。
0638nobodyさん2012/03/13(火) 16:22:08.30ID:???
>>630
は?だれが演算子を捨てろと書いた?

>>613の 「==」って書いたら、後で見直した時に 以降
自分が面倒とか自分が読みにくいとかのくっだらない理由を言える
サンデープログラマなら良いんじゃねーの?
0639(498===523===525)===(498=523=525)2012/03/13(火) 16:35:49.76ID:mq2kKsmo
>>638
「自分が面倒」ってことは、開発チームにとってコストだということですよ。

それ以前に、今どきPHPの「緩やかな比較」を使うエンジニアなんていませんが。
そんなんやってるやついたら、ビンタです。
0640nobodyさん2012/03/13(火) 16:41:24.85ID:???
こんな話題で盛り上がれるって素敵やん
0641nobodyさん2012/03/13(火) 16:45:59.65ID:???
>>638
えっと、サンデープログラマ()なら==でいいと思います
複数人で作業するなら===でやらないと型のチェックの緩さによるバグを生みます
0642nobodyさん2012/03/13(火) 16:51:31.53ID:???
>>639
自分が面倒w
自分中心ですか?
0643nobodyさん2012/03/13(火) 16:51:44.58ID:???
>>596
ショートタグは使うな
が抜けてる
0644nobodyさん2012/03/13(火) 17:00:03.04ID:???
型のチェックを気にするくらいならphp使うな。
緩やかなのはそもそも言語仕様だろ。
0645nobodyさん2012/03/13(火) 17:03:59.38ID:???
まあそこで意地になって==で使っててくれよ
本業じゃないなら別にそれでいいから
会社に入ってそんな緩いコード書いてたら肩身の狭い思いをすることになるし
0646nobodyさん2012/03/13(火) 17:04:35.84ID:???
ところで
誰が==に拘っているの?
0647nobodyさん2012/03/13(火) 17:11:14.52ID:???
お前はROMるか過去レス読んでろ
0648nobodyさん2012/03/13(火) 17:14:00.05ID:???
>>645
なんでPHP?
はじめから型が厳しい言語の方が良いのでは?
0649nobodyさん2012/03/13(火) 17:18:56.91ID:???
PHPだから緩い比較しか使っちゃいけないみたいだな
0650nobodyさん2012/03/13(火) 17:26:24.61ID:???
==
二統一しとけ
0651nobodyさん2012/03/13(火) 17:40:20.42ID:???
ニニ
0652(498===523===525)===(498=523=525)2012/03/13(火) 17:49:43.69ID:mq2kKsmo
Subversionのpost-commit hookでこんなのを設定しとけばいいかも。
exit (preg_match('/[^=]==[^=]/', $source)===0) ? 0 : 1;
0653nobodyさん2012/03/13(火) 18:39:37.39ID:???
===使うのはstrposとか返り値に0やfalseが返ってくる関数使う時
あとは仕様を理解してれば緩やかな比較で問題になるケースはない
if ($a === null || $a === 0')
なんて書きたくないしこの条件の時はStringやbooleanは考慮しなくていいので
単に!$aでよい
0654nobodyさん2012/03/13(火) 18:58:16.50ID:???
>>646
>>649
いや、どーも==でもいいじゃん。ちゃんと仕様理解してれば ってのと
===じゃなきゃダメだろ って別れ方っぽい。
別に==にこだわってるのっていないだろ。
0655nobodyさん2012/03/13(火) 19:12:54.29ID:???
>>653
一人でやるなら自由
複数人で作業するなら統一しないとダメ
誰が読んでも分かるコードにしなければならない
0656nobodyさん2012/03/13(火) 19:18:15.96ID:???
動的型付け言語で型を気にしなきゃいけないってのは本末転倒なのでは
0657nobodyさん2012/03/13(火) 19:34:21.75ID:???
気にするってほどの労力じゃないやろwwwwwwwwww
0658nobodyさん2012/03/13(火) 19:43:48.04ID:???
さっきから複数人、複数人って言ってる奴。
比較の仕様をコーダに覚えさせる気がないなら作業させんな。
バグの元だから。
0659nobodyさん2012/03/13(火) 19:54:03.67ID:???
設計書にかいときゃいいんだよ
0660nobodyさん2012/03/13(火) 20:11:47.17ID:???
このスレのコーディング規約つくろうぜ
0661nobodyさん2012/03/13(火) 20:32:27.22ID:???
グローバル空間に関数や変数置くの禁止な
0662nobodyさん2012/03/13(火) 20:52:30.92ID:???
>>638
可読性によって===と==を使い分けるルールができるんだよね。
必要な場面であっても、いずれかしか使えないって事態が起こるんじゃないの。可読性のために。
0663(498===523===525)===(498=523=525)2012/03/13(火) 21:10:27.58ID:mq2kKsmo
>>653
>if ($a === null || $a === 0')
>なんて書きたくないし

そういう比較が必要な設計が問題かもしれませんね。

>>658
>比較の仕様をコーダに覚えさせる気がないなら

緩い設計や実装のために「比較の仕様をコーダに覚えさせる」みたいなことが
必要になるんだと思います。

変数やメソッドが戻す値はソース(PHP自体や一般のライブラリなら仕様書)を
見ればすぐに分かるのだから、比較の仕様は覚える必要はないはずです。
逆に、ソースを見てもすぐにどんな値を戻すか分からない設計は問題があります。

とかマジレスをしてみる。
0664nobodyさん2012/03/13(火) 21:39:45.42ID:???
このすれを見ていて思ったこと

=== null がスルーされていることw
is_nullを使うべきじゃないかなーってw
0665(498===523===525)===(498=523=525)2012/03/13(火) 21:46:02.31ID:mq2kKsmo
>>664
>is_nullを使うべきじゃないかなーってw

is_nullは緩いので使わないんです。
http://php.net/manual/ja/types.comparisons.php
0666nobodyさん2012/03/13(火) 21:47:03.15ID:???
>>664
どうも==と===の話しか目に入らないみたい。
>>551は俺だけど、コード書いた本人と、俺以外からツッコミはいらないんだもの。
0667nobodyさん2012/03/13(火) 21:49:49.22ID:???
使うべきじゃないしis_nullとかいらないし
0668nobodyさん2012/03/13(火) 21:52:41.25ID:???
>>665
emptyと勘違いしてね
0669nobodyさん2012/03/13(火) 21:53:28.06ID:???
>>665,667
$a === null と is_null($a) の違いを教えてもらえますか
0670nobodyさん2012/03/13(火) 22:42:52.45ID:???
>>665
===よりis_nullが緩い?
0671nobodyさん2012/03/13(火) 23:32:33.43ID:???
レスがぱたっと止まってしまったね
0672nobodyさん2012/03/13(火) 23:50:27.29ID:???
型ゆるゆる言語で何語ってるの?
だったら固い言語に変えればいいのに。
そもそも名前空間貧弱、オブジェクト指向性も中途半端な言語で
複数人開発はやめといた方がいい。向いていない。
0673nobodyさん2012/03/13(火) 23:50:46.31ID:???
そうだねw
is_nullが===より緩いとかいったら恥ずかしくて出てこれないと思うよw
0674nobodyさん2012/03/14(水) 00:02:27.34ID:???
==、===

どっち使おうが遅い。
0675nobodyさん2012/03/14(水) 00:04:55.22ID:???
is_nullとかマジでいらんことは確か
0676nobodyさん2012/03/14(水) 00:06:22.49ID:???
>>675
その理由は?
0677nobodyさん2012/03/14(水) 00:09:57.82ID:???
関数を通す必要がない
0678nobodyさん2012/03/14(水) 00:12:58.18ID:???
>>676
多言語知っている人間にとって意味不明のPHP特有の乱立機能。
0679nobodyさん2012/03/14(水) 00:14:04.45ID:???
>>676
あなたが他の言語使うときはis_null相当機能を探すわけだね。
0680nobodyさん2012/03/14(水) 00:21:47.70ID:???
うーんw
いらない理由を聞いていたけど

実行速度やis_nullに弱い部分とかあるとかそんな理由があるのかと思えば
>>677-679…w
■ このスレッドは過去ログ倉庫に格納されています