&& 之后的条件总是得到评价 [英] does the condition after && always get evaluated

查看:23
本文介绍了&& 之后的条件总是得到评价的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have this if statement that tests for the 2 conditions below. The second one is a function goodToGo() so I want to call it unless the first condition is already true

$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).他们都得到评估还是只有在第一个为真时才评估第二个?

My question is about the 2 if conditions $value < 2000 && goodToGo($value). Do they both get evaluated or does the second one only get evaluated when the first one is true?

也就是说,下面的两个方块是一样的吗?

In other words, are the following 2 blocks the same?

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

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

推荐答案

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

No--the second condition won't always be executed (which makes your examples equivalent).

PHP 的 &&||andor 运算符实现为短-电路"运算符.一旦发现一个条件迫使整个条件的结果,后续条件的评估就会停止.

PHP's &&, ||, and, and or operators are implemented as "short-circuit" operators. As soon as a condition is found that forces the result for the overall conditional, evaluation of subsequent conditions stops.

来自 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());

这篇关于&amp;&amp; 之后的条件总是得到评价的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆