bre*_*ett 44 php conditional if-statement
我有这个if声明,测试下面的两个条件.第二个是函数,goodToGo()所以我想调用它,除非第一个条件已经为真
$value = 2239;
if ($value < 2000 && goodToGo($value)){
//do stuff
}
function goodToGo($value){
$ret = //some processing of the value
return $ret;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是关于2条件$value < 2000 && goodToGo($value).他们都得到评估,还是第二个只在第一个是真的时才得到评估?
换句话说,以下2个块是否相同?
if($value < 2000 && goodToGo($value)) {
//stuff to do
}
if($value < 2000) {
if (goodToGo($value)){
//stuff to do
}
}
Run Code Online (Sandbox Code Playgroud)
sbl*_*lom 82
否 - 不会始终执行第二个条件(这使您的示例等效).
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());
Run Code Online (Sandbox Code Playgroud)
这两个块是相同的。
PHP 逻辑运算符是“懒惰的”,仅在需要时才对它们进行评估。以下代码打印“Hello, world!”:
<?php
$a = 10;
isset($a) || die ("variable \$a does not exist.");
print "Hello, world!"
?>
Run Code Online (Sandbox Code Playgroud)
其他逻辑运算符包括&&、和、或。
<?php
perform_action() or die ('failed to perform the action');
?>
Run Code Online (Sandbox Code Playgroud)
是一个流行的成语。
| 归档时间: |
|
| 查看次数: |
10531 次 |
| 最近记录: |