其中`if(!isset($ foo)OR(isset($ foo)AND $ foo == $ bar))`或`if(!isset($ foo)OR $ foo == $ bar)`哪个更好?

时间:2016-12-17 12:40:41

标签: php

我知道它可能是一个" noob问题"但我想知道我应该使用哪一个命题:

<div class="form-group row datalist-item add-rem-anim" ng-repeat="article in articles.articles | filter:articles.search track by $index">

问题是,我问的是&#34; OR&#34;在这种情况下自然会说&#34; 1. if(!isset($foo) OR (isset($foo) AND $foo == $bar)) {} 2. if(!isset($foo) OR $foo == $bar) {} 存在,如果你愿意,你可以查看他的价值&#34;或者如果你必须指明它可能存在(使用$foo的东西)。

感谢您的回答,对不起我的appromixative english .... :)

1 个答案:

答案 0 :(得分:1)

ORAND||&&都会执行short-circuit evaluationOR||从左到右评估他们的参数,直到他们达到第一个真值,然后返回。 AND&&从左到右评估他们的参数,直到他们达到第一个假值并返回它。在这两种情况下,他们都不会评估任何剩余的论点。

所以你应该使用#2,因为当!isset($foo)为真时它永远不会评估第二个表达式,所以不需要再次检查isset($foo)