首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP惰性布尔求值

PHP惰性布尔求值
EN

Stack Overflow用户
提问于 2010-11-18 23:53:56
回答 3查看 9.8K关注 0票数 26

我有一个条件语句,如下:

代码语言:javascript
复制
if($boolean && expensiveOperation()){ ...}

PHP有没有懒惰的布尔值计算,也就是说,它会检查$boolean,如果为false,就不执行代价高昂的操作了吗?如果是这样,我应该把我的变量放在什么顺序?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-18 23:57:48

是的,确实如此。这叫做短路评估。查看documentation page上的评论...

至于顺序,它先根据Operator Precedence执行检查,然后从左到右执行检查。所以:

代码语言:javascript
复制
A || B || C

将首先计算A,然后仅当A为false时计算B,并且仅当A和B都为false时计算C...

代码语言:javascript
复制
A AND B || C

将始终计算B || C,因为||的优先级高于AND (对于&&则不是这样)。

票数 32
EN

Stack Overflow用户

发布于 2010-11-18 23:58:01

是的,PHP做short-circuit evaluation

票数 9
EN

Stack Overflow用户

发布于 2010-11-18 23:58:47

PHP确实有短路评估。你的例子应该是正确地使用它:

http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4216754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档