トップページ⇒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等)・フレームワークは各該当スレへ
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
0681nobodyさん2012/03/14(水) 00:23:55.89ID:???
自分の無知さを晒してないでベンチぐらいとれよ
関数より式のほうが早いに決まってんだろ
0682nobodyさん2012/03/14(水) 00:27:25.05ID:???
is_nullごときだと、内部の処理が等価ってこともありえるがな。
0683nobodyさん2012/03/14(水) 00:35:03.14ID:???
どっちにしてもphpは実行速度は遅いからどうでもいいよ。
実行速度にこだわるなら別の言語へどうぞ。
0684nobodyさん2012/03/14(水) 00:37:54.54ID:???
違う言語での話だが
言語で持っている関数と同等の処理をインラインアセンブラで最速になる様に書いて
コンパイルした際バイナリエディタで比較したら一致したって事はあるらしいな

今はテストする環境は無いが仕事場に行ったら試してみるか
0685nobodyさん2012/03/14(水) 00:39:12.88ID:???
PHPが遅いのは間違いないからどうであろうと大差ない。
0686(498===523===525)===(498=523=525)2012/03/14(水) 00:43:24.46ID:SRtAsTeP
間違っていました。
お詫びして訂正いたします。

PHPでは以下の3つの状態がNULLで、
  $a=NULL; // $a
  $a;   // $b
      // $c(未定義)

上記の状態でTRUEを戻し、それ以外でFALSEを戻すという点で、
「$var===NULL」と「is_null($var)」は同じです。
そして挙動が反対という点を除き、「isset($var)」も同じでした。

>>668 >>669 >>670
大変失礼いたしました。

ほとんどisset()も使いませんが、連想配列を動的に使う時だけ、
「notice Undefined variable」が出ないようにisset()を使います。

===を使うのでis_null()を長らく使っていなかったのですが、緩かったからだと
思い込んでおりましたが、単に必要が無かったからでした。てへっ!

でも===nullだとis_null()より2バイトお得なので、===nullの方がいいと思います!
0687nobodyさん2012/03/14(水) 00:47:20.33ID:???
>>686
大差ないからどうでもOK。
0688(498===523===525)===(498=523=525)2012/03/14(水) 00:48:56.98ID:SRtAsTeP
>>686
ちょっと書き間違えてた(二行目 $a → $b)。

>PHPでは以下の3つの状態がNULL
  $a=NULL; // $a
  $b;   // $b
      // $c(未定義)
0689nobodyさん2012/03/14(水) 00:49:05.92ID:???
空白明けるから同じじゃね
0690nobodyさん2012/03/14(水) 00:50:23.89ID:???
パフォーマンスにこだわるなら別言語
0691(498===523===525)===(498=523=525)2012/03/14(水) 00:51:15.44ID:SRtAsTeP
>>689
ボケにマジレスされたら困ります。
0692nobodyさん2012/03/14(水) 00:57:52.94ID:???
可読性のためにis_null使ってる
0693(498===523===525)===(498=523=525)2012/03/14(水) 01:01:44.20ID:SRtAsTeP
>>692
is_null($var) より $var===NULL の方が可読性は高いと思うなぁ。
0694nobodyさん2012/03/14(水) 01:04:17.86ID:???
>>686
変数ににnullをセットissetしたら何が戻ってくるのかな〜?とw
真偽が反対だけど同じと言ってもいいのかな?w
あっ使わなければ問題ないのか?w
0695nobodyさん2012/03/14(水) 01:11:26.32ID:???
このスレ恥ずかしい。
0696nobodyさん2012/03/14(水) 01:18:20.70ID:???
>>680
C言語やJava言語の経験者にis_nullの効能を説明してくれない?
0697(498===523===525)===(498=523=525)2012/03/14(水) 01:18:51.01ID:SRtAsTeP
>>694
>変数ににnullをセットissetしたら何が戻ってくるのかな〜?とw

$x = null;
var_dump(isset($x)); // bool(false)

> 真偽が反対だけど同じと言ってもいいのかな?w

真偽が反対以外、同じですね。
0698(498===523===525)===(498=523=525)2012/03/14(水) 01:27:40.70ID:SRtAsTeP
WEBアプリにおけるPHPの遅さは、
DBやネットワークなどの外部要因、
アーキテクチャーやアルゴリズムなどの最適化余地と比べたら、
無視できるレベル。

よって無罪。
0699nobodyさん2012/03/14(水) 01:29:15.81ID:???
>>698
単なるインクルードで遅さを感じるけど・・・。
0700nobodyさん2012/03/14(水) 01:30:53.89ID:???
>>698
symfony使ったことある?
デフォルト状態でスゴイ遅さですが・・・。
0701nobodyさん2012/03/14(水) 01:31:14.75ID:???
>>698
CakePHP使ったことある?
デフォルト状態でスゴイ遅さですが・・・。
0702nobodyさん2012/03/14(水) 01:33:16.47ID:???
>>694
>>697を見たら違和感はあるね。
なんとなく理解しました。
0703nobodyさん2012/03/14(水) 01:36:02.78ID:???
>>698
localhostでも遅いのですが・・・。
0704nobodyさん2012/03/14(水) 01:45:28.63ID:???
痛々しいな
0705nobodyさん2012/03/14(水) 01:55:29.14ID:???
そりゃコンパイラとおす言語に比べたら遅いのは認めるが
必要十分な速度だと思うけどな。
近くのコンビニまでフェラーリで行くより自転車のが便利みたいなもんで。

と、釣られてみた。
0706nobodyさん2012/03/14(水) 01:57:31.10ID:???
むしろphpだから速度気にして === 使ってるよ
少しでも速いほうがいいからね
0707(498===523===525)===(498=523=525)2012/03/14(水) 01:59:30.28ID:SRtAsTeP
>>699
PHP以外の言語だと速いのですか?

>>700
symfonyは、3サイトくらい作りました。
symfonyは遅いですよ。
symfony規模のフレームワークをPHPなどのインタープリタで作ったら、他の言語でも遅いでしょう。
キャッシュを前提としたフレームワークですから、面倒ですがキャッシュの設定をしてください。
アクセラレータも必須です。

>>701
CakePHPは使ったことがないです。
アクセラレータを使い、メモリーに余裕があっても遅いのでしょうか。。

>>703
PHP以外の言語だと速いのですか?
0708nobodyさん2012/03/14(水) 02:06:06.88ID:???
>>707
phpは遅いです。
facebookの失敗例が良い例です。
0709nobodyさん2012/03/14(水) 02:08:08.82ID:???
>>701
CakePHPに限らず、
DBから取得したデータを簡単にキャッシュできないので遅いです。
0710nobodyさん2012/03/14(水) 02:17:55.05ID:rNta1GYa
PHPExcelをLinux環境に入れてテストしたのですが、
開く時ファイルが破損している旨が表示されます。
原因は何が考えられますか?
0711nobodyさん2012/03/14(水) 02:43:02.71ID:???
>>698
>>545みたいなコード書くクセがついてりゃPHPも本来の速度出せないよ。
無駄に遅く動くコードを書いて、PHPは遅い!って喧伝してもなぁ。
せめてちゃんと書いて、それでもやっぱりこれだけ遅いんだ!と主張してほしい。
結果として遅いというのは明白だけれど、あまりにも稚拙。
0712nobodyさん2012/03/14(水) 02:43:51.09ID:???
安価ミスるとか恥ずかしい。
>>711の>>545は>>544
0713nobodyさん2012/03/14(水) 02:46:25.79ID:???
>>710
Excelファイルを開くときに出るのだろうか。
Excelファイルの形式っていっぱいあるよ
0714(498===523===525)===(498=523=525)2012/03/14(水) 02:51:00.77ID:SRtAsTeP
>>708
facebookの規模を考えれば激速だと思いますが、どの辺が失敗例なのでしょう?

>>709
DBを使う限り遅いから、PHPが遅いわけではないという意味でしょうか?
0715nobodyさん2012/03/14(水) 02:53:21.88ID:???
>>714
facebook hiphopでぐぐりなさいな。
0716(498===523===525)===(498=523=525)2012/03/14(水) 03:01:55.83ID:SRtAsTeP
>>711
マテ。
初心者向けに >>542 のコードを元にした分かりやすい動くコードを示したものに、その言い方はないだろ。

そして「遅い」なんて言ってなくて、「特に遅くない」と言っているだけ。

それに >>544 のコードは、WEBアプリとして見た場合、さして遅くなる要因はない。
0717nobodyさん2012/03/14(水) 03:04:44.92ID:???
なんなんだよこのスレw
0718(498===523===525)===(498=523=525)2012/03/14(水) 03:05:29.31ID:SRtAsTeP
>>717
一緒に語ろう。
0719(498===523===525)===(498=523=525)2012/03/14(水) 03:08:13.74ID:SRtAsTeP
>>715
知ってるよ。
HipHop以前のfacebook使ったことある?
アクセス数は今ほどでは無かったにせよ、十分に大規模、かつ、十分に速かったよ。
0720nobodyさん2012/03/14(水) 03:20:44.67ID:???
測定すると、is_nullは===nullに比べて4倍遅かった。ただし、検証環境がPHP5.1.6なので今はどうか不明
0721nobodyさん2012/03/14(水) 03:24:30.29ID:???
ヌルヌル動きます
nullだけに
0722nobodyさん2012/03/14(水) 03:28:30.67ID:???
PHP5.3.3にして試したら3倍くらいに解消されてた。
なにげに関数呼び出しのオーバーヘッドが減ってたのかな。
0723(498===523===525)===(498=523=525)2012/03/14(水) 03:28:39.65ID:SRtAsTeP
>>720
1ページあたり、どれ位遅くなるの?
0724nobodyさん2012/03/14(水) 03:37:25.95ID:???
>>723
ごくわずか。
何で調べたかっていうと、内部的に同じ動作になるのかどうかがちょっと気になったので。
0725nobodyさん2012/03/14(水) 07:53:14.19ID:rNta1GYa
>>713
レスありがとうございます。

Excel開くとき出ました。
ファイル形式はExcel5?指定。Excel2003で開きたいのです。

PHPExcel使うのにZipの設定がいるみたいで
PHPの設定見るとZipオプションが付いてなかったので
オプション付けて再インストールしたらファイル破損の
メッセージが出なくなりました。
0726nobodyさん2012/03/14(水) 08:16:57.12ID:CYW9Bweb
phpで文字列が存在するかどうかの条件分岐で
'””のような空文字だったらfalse、'0'だったらtrueとやりたいのですが

if($hoge || $hog ==='0')
とやるしかないのでしょうか?
0727nobodyさん2012/03/14(水) 08:20:57.60ID:???
>>726
nullだった場合や空の配列だった場合やtrueやfalseが入っている場合は?
0728nobodyさん2012/03/14(水) 08:24:00.21ID:CYW9Bweb
>>727
null→false
他の空の場合もtrueもfalseはどっちでも大丈夫です
issetだと空文字も0もtrueになってしまうので空文字と0の差をどうしたものかと
0729nobodyさん2012/03/14(水) 08:32:07.71ID:???
>>728
じゃ$x===0だけでいいんでは?
0730nobodyさん2012/03/14(水) 08:33:11.47ID:???
> phpで文字列が存在するかどうかの条件分岐で
> '0'だったらtrueとやりたいのですが

考え方を変えるなら ”文字列に長さがあるならば” ってことかの?
0731(498===523===525)===(498=523=525)2012/03/14(水) 08:34:46.36ID:SRtAsTeP
>>726
if($hoge === ''){
  return false
}
else if($hoge === '0'){
  return true
}
else{
  // お好きなように
}
0732nobodyさん2012/03/14(水) 08:45:50.74ID:???
へーstrlenってtrueは1でfalseは0を返すんだ
初めて知った
0733nobodyさん2012/03/14(水) 08:54:36.31ID:???
>>726
http://jp2.php.net/manual/ja/types.comparisons.php
0734nobodyさん2012/03/14(水) 09:10:22.39ID:vFLnVtDq
いろいろとありがとうございます!
>>730のやり方だとうまくいったんでコレで試してみます
0735nobodyさん2012/03/14(水) 10:06:21.25ID:???
>>711
手本になるコードはようp
0736nobodyさん2012/03/14(水) 10:07:07.87ID:???
>>722
自分も計測してみた
VM ESXIの仮想環境
PHPバージョン:5.3.3
===が倍速い
100万回ループをそれぞれ5回計測して 

===  COMP:0.12185192
is_null COMP:0.24702406
=== COMP:0.11307788
is_null COMP:0.24555087
=== COMP:0.11323190
is_null COMP:0.24664307
=== COMP:0.11317492
is_null COMP:0.24571705
=== COMP:0.11359096
is_null COMP:0.24549198

100万回で0.1秒差だからごく普通にスクリプト書いたら誤差で収まるんだろうね
ESXI全体として見た場合の負荷が3%弱ってのも驚いた
0737nobodyさん2012/03/14(水) 10:13:04.39ID:???
==と===兼用派と===一筋派
0738nobodyさん2012/03/14(水) 10:22:36.27ID:???
あと === と == も比べてみたけど誤差で収まる
0739nobodyさん2012/03/14(水) 11:03:17.04ID:???
GPLだのOSLだのライセンスの特徴がよく分からないので
何が許されて、何が禁止されるのか分かりやすい表か
なんかないですか? できれば
   GPL OSL MIT
hoge  ◯   ×   ◯
hoge  ×   ×   ◯ 

みたいになってるのがいいです。
0740nobodyさん2012/03/14(水) 11:09:01.77ID:???
>>719
HadoopはPHPですか?
facebookの基幹は昔からPHPじゃないはずですよ。
0741nobodyさん2012/03/14(水) 11:09:13.26ID:???
スレタイ読めないバカはスルー
0742nobodyさん2012/03/14(水) 11:12:53.18ID:???
>facebookの基幹は昔からPHPじゃないはずですよ。
それはどうかな?
中の人に聞かないとわからないよ
youtubeも初期のころはPHPでやってた気がするが
07437392012/03/14(水) 11:34:58.58ID:???
良い表が見つかりました!
0744nobodyさん2012/03/14(水) 11:41:20.71ID:???
ちょっと読めば、表なんぞ作れないことがわかると思うがな。
共通した項目なんぞほとんどなくて、○×で済むようなもんじゃないし。
0745nobodyさん2012/03/14(水) 11:53:14.55ID:???
>>742
facebookはHiveをHadoopプロジェクトに寄贈したの知っている?
寄贈したのは2008年だからずいぶん前から基幹はPHPじゃないみたいよ。
07467392012/03/14(水) 12:25:31.23ID:???
>>743
見つかってません、なりすましはやめてください!

引き続き、良い表があれば教えてください。
メシ食ってきます。
0747nobodyさん2012/03/14(水) 12:26:40.58ID:???
荒らしか
07487392012/03/14(水) 12:27:23.18ID:???
やっぱり見つかりましたのでもういいです。
0749nobodyさん2012/03/14(水) 12:31:24.49ID:???
>>747
>>1読んでない奴への対処法が実践されてるだけじゃね?
なりすましされてまだ変わらんとは相当に低脳な質問者っぽいが。
0750nobodyさん2012/03/14(水) 12:59:12.31ID:???
質問でも回答でもない荒らしが、IDが出てないとはいえスレ通り質問してるやつに文句とな。
0751nobodyさん2012/03/14(水) 13:02:53.40ID:???
>>750
ライセンスの話がスレ通りとはいかに
0752nobodyさん2012/03/14(水) 13:04:34.75ID:???
そんじゃここらで退場してもらいましょうかね
http://toro.2ch.net/test/read.cgi/tech/1266247461/
俺ってやさしいね
0753(498===523===525)===(498=523=525)2012/03/14(水) 13:28:41.72ID:suCVTKUm
>>740 >>742 >>745

facebookがPHPかどうかという流れで、HadoopとかHiveとか
データストアの話がでてくるのはなぜですか?
0754nobodyさん2012/03/14(水) 14:10:10.28ID:???
>>753
システムの基幹だからですよ
0755nobodyさん2012/03/14(水) 14:36:59.38ID:???
>>750
ID出てなきゃ、スレ通りじゃないだろ
勝手にルール変えんなハゲ
0756nobodyさん2012/03/14(水) 14:46:36.21ID:???
スルーしないやつも荒らし
0757nobodyさん2012/03/14(水) 15:02:52.82ID:MUSukvI8
一致の確認で === を使うのは、 == よりも正常値を限定するのに有用だと理解できます。
逆に不一致の確認では、 != を使う方が !== よりも正常値を限定できるように
思えるのですが、この考えは間違っていますか?
0758(498===523===525)===(498=523=525)2012/03/14(水) 15:06:56.44ID:suCVTKUm
>>754
そういう話だと、PHPで完結するものの方が少ないから、PHPが遅いという話は
意味がなくなりますね。

それこそ、MySQLの複数台構成とか、シャーディングとか、キャッシュサーバーとか、
そういうアプリとしてのアーキテクチャーの話になってくる。

まぁ実際、中規模以上のサイトで速い遅いというのは、その部分の話なわけで、
フロントエンド(PHPなど)の言語が速い遅いなんていうのはほとんど関係がない。

自分も中規模以上のサイトをある程度経験しているので、速い遅いという話だと
そういう観点しか無かったりします。
0759nobodyさん2012/03/14(水) 15:12:41.19ID:???
中規模以上のサイトを経験していてあのコードとかあの知識かよ…終わってるだろ…
0760nobodyさん2012/03/14(水) 15:12:46.05ID:???
>>757
それで合ってるけど、それを認めたくない一部の人間がここで騒いでるだけ
0761(498===523===525)===(498=523=525)2012/03/14(水) 15:22:42.80ID:suCVTKUm
>>757
そもそも、「緩い比較」が必要な「緩い値」となるコードが微妙です。

>>759
具体的にご指摘を!
0762nobodyさん2012/03/14(水) 15:28:02.53ID:???
<?php ?>って最後の?>はつけなくてもいいの?
0763nobodyさん2012/03/14(水) 15:32:45.38ID:???
>>762
ファイルの終わりなら突けなくていい
0764(498===523===525)===(498=523=525)2012/03/14(水) 15:33:16.45ID:suCVTKUm
>>762
付けなくても動く。
付けて、その後に無駄なスペースがあると、ヘッダー出力やセッション開始で
問題になったりするから付けるな、という人達もいる。

僕はつけてる。
0765nobodyさん2012/03/14(水) 15:42:54.45ID:???
>>758
php以外の経験は?
0766nobodyさん2012/03/14(水) 15:49:06.84ID:???
5人です
0767(498===523===525)===(498=523=525)2012/03/14(水) 15:51:41.32ID:suCVTKUm
言語は、C少し、COBOL、Java、ASP少し、Perl少し、PHP 少し
その他は、
Oracle、SQL Server、MySQL
ネットワーク
FreeBSD 少し、Linux
IIS少し、Apache
とか。
0768nobodyさん2012/03/14(水) 15:58:19.18ID:r+zK7voT
>>766
その中にINSERTが可能な属性を持ったユーザはいましたか?
■ このスレッドは過去ログ倉庫に格納されています