我有点追求优化(至少按照我的定义如此),这个问题已经困扰了我很长时间。
我想知道 PHP 是否对 && 和 || 进行了一些优化: 接下来看一个例子:
$a = "apple";
$b = "orange";
if ($a == "orange" && $b == "orange") {
//do stuff
}
当该代码执行时,它会检查$a是否等于“orange”。在这种情况下它不是。然而,有一个&&运算符。由于第一部分($a ==“orange”)已经返回false,PHP是否仍然会检查$b是否等于“orange”?
我对||也有同样的问题:
$a = "orange";
$b = "orange";
if ($a == "orange" || $b == "orange") {
//do stuff
}
当它检查$a是否等于"orange"时,它会返回true。由于这将使||运算符返回true,PHP甚至会检查||的第二部分吗(因为我们已经知道它将是true)? 希望我表达清楚了,希望有人能回答我的问题。谢谢!
if (isset($a) && $a instanceof SomeClass && $a->someMethod() == 'orange')
它必须通过每个条件步骤来测试下一个。但是,除了我知道它可以工作之外,我没有任何依据。 - Logan Bibbyif (true || die()) { echo '1';}
和if (true && die()) { echo '1';}
- Mike B