我有这个 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 的 &&
、||
、and
和 or
运算符被实现为“短路”运营商。一旦发现强制整个条件的结果的条件,后续条件的评估就会停止。
来自 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/