PHP Lazy布尔评估

时间:2010-11-18 15:53:56

标签: php lazy-evaluation

我有条件声明:

if($boolean && expensiveOperation()){ ...}

PHP是否具有惰性布尔评估,即它是否会检查$boolean,如果它是假则不会执行昂贵的操作?如果是这样,我应该把我的变量放在什么顺序?

3 个答案:

答案 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