if文の中に&&
や||
で条件を複数入れた時にどちらから処理されるか、PHPは左からであってると思ったけど、何か右から判定するのが合った気がしたので念のため調べてみました。
次のような関数を作成して、この関数を条件にすれば、出力結果から左右どちらから処理をしているかが判ります。
<?php function f($str) { echo $str; return true; }
&& (AND)
<?php if( f('A') && f('Z') ); // AZ if( !f('A') && f('Z') ); // A if( f('A') && !f('Z') ); // AZ if( !f('A') && !f('Z') ); // A
左側から処理がされています。
|| (OR)
<?php if( f('A') || f('Z') ); // A if( !f('A') || f('Z') ); // AZ if( f('A') || !f('Z') ); // A if( !f('A') || !f('Z') ); // AZ
||
も同様に左側から処理がされています。
PHPのif文の条件は左から(先に書いた方から)されるで合っていました!
なので、条件が沢山あるif文を作成する時は、先にbool値だけで判定できるとか関数を呼ばない処理の軽いものから書いておけば計算量が減るということですね。
なんとなく記憶にある右から処理する言語って何だったか気になるところですが、
覚えている範囲だとプログラム言語ではない感じですが、
CSSはセレクタを右から辿って検索する(ネストの深い所から上階層に向かって捜査)のでセレクタにタグ名を付けない方が高速というのがあります。
h1.logo /* 遅い */ .logo /* CLASSだけの方が速い */ #logo /* IDの方がCLASSより速い */
ef - a tale of memories. OPENING THEME〜euphoric field feat.ELISA
- アーティスト: TVサントラ
- 出版社/メーカー: GENEON ENTERTAINMENT,INC(PLC)(M)
- 発売日: 2007/10/24
- メディア: CD
- 購入: 2人 クリック: 161回
- この商品を含むブログ (77件) を見る