我是一個優化怪胎(至少根據我的定義),這個問題一直困擾着我很長一段時間。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