PHP 惰性布尔求值

问题描述 投票:0回答:3

我有一个条件语句:

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

PHP 是否有惰性布尔求值,即它是否会检查

$boolean
,如果为 false,则不会执行昂贵的操作?如果是这样,我应该按什么顺序放置变量?

php lazy-evaluation
3个回答
32
投票

是的,确实如此。这称为短路评估。请参阅文档页面...

上的评论

对于顺序,它根据运算符优先级,然后从左到右进行检查。所以:

A || B || C

首先评估 A,然后仅当 A 为假时评估 B,仅当 A 和 B 均为假时评估 C...

但是

A AND B || C

将始终评估

B || C
,因为
||
的优先级高于
AND
(不适用于
&&
)。


9
投票

是的,PHP 会进行短路评估


3
投票
© www.soinside.com 2019 - 2024. All rights reserved.