我是一个优化怪胎(至少根据我的定义),这个问题一直困扰着我很长一段时间。PHP ||和&&逻辑优化
我想知道如果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')',它必须通过条件的每一步来测试下一个。但是,除了我知道它的作用之外,我没有任何支持我的东西。 – 2012-04-08 02:57:00
为什么不尝试呢?'if(true || die()){echo'1';}'和'if(true && die()){echo'1';}' – 2012-04-08 03:00:44