2010-12-03 20 views
16

のは、私はこのような何かを持っているとしましょう:PHP - IF(条件)実行

if(1 == 0 && do_stuff()) { 
    ... 
} 

明らかに1は0ではないので、何のポイントは、他の状態を確認するためにありません。 PHPはこれまでdo_stuff()を実行していますか?

+1

で第二の条件を実行することはありません、あなたはもちろんの最初の条件としてそれを持っている可能性がありif。詳細は私の答えを見てください。 –

答えて

35

いいえ - PHPはレイジー評価(短絡評価とも呼ばれます)を使用しているため、論理ANDの最初の条件が偽であれば、他の条件の評価を試みません。

同様に、ORを実行していて、最初の条件が真であれば、2番目の条件は評価されません。

+11

これは、高価なテストを右に置く理由です。 – Gordon

+2

多くの場合、変数に対してテストするので、テストのコストは重要ではありません。あるいは、テストでは、 "決して"失敗することはありません(本番環境では '$ debug'のように)。次に、もう一つの方法は、テストに失敗する可能性が最も高いテストを左に置くことです。 – KingCrunch

+1

これはPHPに関しては確かです。とにかく、JavaScriptの同じ機能性に関して違いがあることは注目に値する。 PHPでは、結果は常にブール値ですが、JavaScriptでは最後に評価されたサブ式の値です。 – Ando

1

いいえ、この条件ではdo_stuff()を実行しません。

4

最初の条件がfalseの場合は、必ず「do_stuf」を実行したい場合は、PHPは& &オペレータ