我有一个条件语句,如下:
if($boolean && expensiveOperation()){ ...}
PHP有没有懒惰的布尔值计算,也就是说,它会检查$boolean
,如果为false,就不执行代价高昂的操作了吗?如果是这样,我应该把我的变量放在什么顺序?
发布于 2010-11-18 23:57:48
是的,确实如此。这叫做短路评估。查看documentation page上的评论...
至于顺序,它先根据Operator Precedence执行检查,然后从左到右执行检查。所以:
A || B || C
将首先计算A,然后仅当A为false时计算B,并且仅当A和B都为false时计算C...
但
A AND B || C
将始终计算B || C
,因为||
的优先级高于AND
(对于&&
则不是这样)。
发布于 2010-11-18 23:58:01
是的,PHP做short-circuit evaluation。
发布于 2010-11-18 23:58:47
PHP确实有短路评估。你的例子应该是正确地使用它:
http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages
https://stackoverflow.com/questions/4216754
复制相似问题