我有条件声明:
if($boolean && expensiveOperation()){ ...}
PHP是否具有惰性布尔评估,即它是否会检查$boolean
,如果它是假则不会执行昂贵的操作?如果是这样,我应该把我的变量放在什么顺序?
答案 0 :(得分:27)
是的。这被称为短路评估。请参阅documentation page ...
上的评论对于订单,它会根据Operator Precedence执行检查,然后从左到右执行检查。所以:
A || B || C
首先评估A,然后仅在A为假时进行B评估,仅在A和B都为假时进行C评估...
但是
A AND B || C
始终评估B || C
,因为||
的优先级高于AND
(&&
不正确)。
答案 1 :(得分:7)
是的,PHP确实short-circuit evaluation。
答案 2 :(得分:3)
PHP确实有短路评估。你的例子就是正确使用它:
http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages