php - && 之后的条件是否总是被评估

标签 php conditional if-statement

我有这个 if测试以下 2 个条件的语句。第二个是函数goodToGo()所以我想调用它,除非第一个条件已经为真

$value = 2239;

if ($value < 2000 && goodToGo($value)){
   //do stuff
}

function goodToGo($value){
   $ret = //some processing of the value
   return $ret; 
}

我的问题是关于 2 if 条件 $value < 2000 && goodToGo($value) .他们都得到评估还是只有在第一个为真时才评估第二个?

换句话说,以下 2 个 block 是否相同?

if($value < 2000 && goodToGo($value)) {
   //stuff to do
}

if($value < 2000) {
    if (goodToGo($value)){
       //stuff to do
    }
}

最佳答案

不——不会总是执行第二个条件(这使您的示例等效)。

PHP 的 &&||andor 运算符被实现为“短路”运营商。一旦发现强制整个条件的结果的条件,后续条件的评估就会停止。

来自 http://www.php.net/manual/en/language.operators.logical.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());

关于php - && 之后的条件是否总是被评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535515/

相关文章:

r - 条件概率

python - 那么这个疯狂的循环和 if 序列呢?改进此代码的想法?

ios - 根据 Sprite 的当前位置让 Sprite 移动到某个位置?

java - 语法错误,删除 token "else"

php - excel导入时如何返回变量

php - 如何从Mysql数据库中获取时分格式的时间格式?

php - 使用类型提示和依赖注入(inject)

php - 从 PHP 读取 mercurial 存储库

jquery - 基于字体系列的条件字体大小

loops - Mathematica : Conditional Operations on Lists