2016-12-17 11 views
-5

私はそれはおそらく「noobの質問」ですが、私は、私が使用する必要があり、それらの命題のどちらを思っていた知っています:

1. if(!isset($foo) OR (isset($foo) AND $foo == $bar)) {} 
2. if(!isset($foo) OR $foo == $bar) {} 

事は、私が条件であれば、「OR」を求めている、あります当然、「$fooが存在するなら、あなたが望むなら彼の値をチェックしてください」、またはそれが存在する可能性がある場合はissetのものを指定しなければならない場合は、

は、あなたの答えをありがとう、そして私のappromixative英語のため申し訳ありません.... :)

+0

最初のものは冗長なので、#2を使用してください。 – Ryan

+0

どちらが良いですか。正当な理由がないために条件を複製しないもの、または正当な理由がないために条件を複製するものはありませんか? – PeeHaa

+0

@Ryan Thx!だから私が思ったように、条件の中の 'または'は変数$ fooが存在すると言うだけで十分です。 @PeeHaa、もっと説明できますか?正当な理由がないと言っているのはなぜですか?私のif条件では、変数が存在しないかどうかを確認しなければなりません。そうであれば、それは特定の値と等しくなります。どうしたでしょうか? – Vae

答えて

1

ORAND||、および&&すべてがshort-circuit evaluationを行います。 OR||は、最初の真理値に達するまで左から右へ引数を評価し、それを返します。 AND&&は、引数が最初の偽値になるまで左から右に評価し、それを返します。どちらの場合も、残りの引数は評価されません。

!isset($foo)がtrueの場合は、2番目の式は評価されないため、isset($foo)を再度確認する必要はないため、#2を使用する必要があります。

関連する問題