我知道这一定是一个简单的问题,但我知道在 PHP 中这样的语句
if ($a && $b) { do something }
如果 $a 为假 PHP 甚至不检查 $b
那么 OR 所以同样的事情
if ($a || $b) { do something }
如果 $a 为真,它是否仍然检查 $b
我知道这是基本的东西,但我无法在任何地方找到答案......谢谢
我知道这一定是一个简单的问题,但我知道在 PHP 中这样的语句
if ($a && $b) { do something }
如果 $a 为假 PHP 甚至不检查 $b
那么 OR 所以同样的事情
if ($a || $b) { do something }
如果 $a 为真,它是否仍然检查 $b
我知道这是基本的东西,但我无法在任何地方找到答案......谢谢
一旦知道结果,就停止对逻辑表达式的求值。
请参阅手册中逻辑运算符页面上的示例 1 。
// --------------------
// 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());
看这个例子:
function foo1() {
echo "blub1\n";
return true;
}
function foo2() {
echo "blub2\n";
return false;
}
if (foo1() || foo2()) {
echo "end.";
}
$b / foo2() 未检查。在这里演示:codepad.org
如果至少一个 OR 操作数为真,则无需进一步检查其他操作数,整个事情将评估为真。
(a || b || c || d || e ||...) 如果至少有一个操作数为真,则为真,因此一旦我发现一个操作数为真,我不需要检查以下内容操作数。
这个逻辑适用于任何地方,PHP、JAVA、C...
如果您非常了解您的真值表,那么您可能可以自己弄清楚。正如其他人所说,PHP 将评估直到确定结果为止。在 OR 的情况下,只有一个为真,语句才能返回真。所以 PHP 会一直计算,直到找到一个真值。如果找不到,则该语句评估为假。
<?php
if(true && willGetCalled()) {}
if(false && wontGetCalled()) {}
if(true || wontGetCalled()) {}
if(false || willGetCalled()) {}
?>