首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP如果执行

PHP如果执行
EN

Stack Overflow用户
提问于 2016-10-18 09:23:41
回答 2查看 91关注 0票数 0

在PHP中,如果您有以下代码,$b是否会得到评估,因为$a会导致if语句返回false?

代码语言:javascript
复制
$a = false;
$b = true;

if ($a && $b) {
  // more code here
}

另外,如果$b确实得到了评估,那么是否曾经有过这样的情况: if语句的一部分可能不会被计算,因为处理器已经知道值为false?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-18 09:30:34

&&的计算一到达false条件就会停止。

这些(&&)是短路操作符,因此它们不会检查第二个条件是否正确(在or情况下)或假条件(在AND情况下)。

参考资料:http://php.net/manual/en/language.operators.logical.php

来自文件:

代码语言:javascript
复制
<?php

// --------------------
// foo() will never get called as those operators are short-circuit

$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());
票数 4
EN

Stack Overflow用户

发布于 2016-10-18 09:26:08

一旦结果已知为,就会停止逻辑表达式的计算。

如果$a为false,则不会对$b进行评估,因为它不会更改($a && $b)结果。

这样做的一个结果是,如果对$b的评估比对$a的评估需要更多的资源,那么使用$a启动测试条件。

但要注意

PHP没有(在一般情况下)指定计算表达式的顺序,应该避免采用特定计算顺序的代码,因为PHP的不同版本之间或取决于周围的代码,行为可能会发生变化。(源php文档)

因此,您不应该假设如果$b是假的,就不会对$a进行评估,因为将来可能会发生变化( php说)。

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

https://stackoverflow.com/questions/40104366

复制
相关文章

相似问题

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