【发布时间】:2012-04-21 01:08:20
【问题描述】:
我是个优化狂(至少按照我的定义),这个问题困扰了我很长一段时间。
我想知道 PHP 是否对 && 和 || 做了一些优化: 举个例子:
$a = "apple";
$b = "orange";
if ($a == "orange" && $b == "orange") {
//do stuff
}
当该代码执行时,它会检查 $a 是否等于“橙色”。在这种情况下,它不是。但是,有一个 && 运算符。由于第一部分 ($a == "orange") 已经返回 false,PHP 是否仍会检查 $b 是否等于 "orange"?
我对 || 有同样的问题:
$a = "orange";
$b = "orange";
if ($a == "orange" || $b == "orange") {
//do stuff
}
当它检查 $a 是否等于“橙色”时,它返回 true。因为那会使||运算符返回 true,PHP 是否会检查 || 的第二部分(因为我们已经知道它会是真的)?
希望我在这里说得通,希望有人能回答我。谢谢!
【问题讨论】:
-
我一直这么认为。而且,在实践中,AND 运算符确实以这种方式工作。例如,我可以做
if (isset($a) && $a instanceof SomeClass && $a->someMethod() == 'orange'),它必须通过条件的每一步才能测试下一个。但是,除了我知道它有效这一事实之外,我没有什么可以支持我的。 -
为什么不试试呢?
if (true || die()) { echo '1';}和if (true && die()) { echo '1';}
标签: php performance optimization logic