Tôi là một chút của một freak tối ưu hóa (ít nhất là theo định nghĩa của tôi) và câu hỏi này đã được bugging cho tôi một thời gian khá.PHP || và && logic tối ưu hóa
Tôi tự hỏi nếu PHP hiện một số tối ưu hóa trên & & và ||: Lấy ví dụ sau đây:
$a = "apple";
$b = "orange";
if ($a == "orange" && $b == "orange") {
//do stuff
}
Khi mã thực thi, nó sẽ kiểm tra nếu $ a là bằng "cam. " Trong trường hợp này thì không. Tuy nhiên, có một toán tử & &. Vì phần đầu tiên ($ a == "cam") đã trả về false, PHP sẽ vẫn kiểm tra xem $ b có bằng "màu da cam không?"
Tôi có cùng một câu hỏi cho ||:
$a = "orange";
$b = "orange";
if ($a == "orange" || $b == "orange") {
//do stuff
}
Khi kiểm tra nếu $ a là bằng "cam", nó trả về true. Vì điều đó sẽ làm cho || toán tử trả về true, PHP sẽ kiểm tra phần thứ hai của || (vì chúng ta đã biết nó sẽ đúng)?
Hy vọng rằng tôi có ý nghĩa ở đây và hy vọng ai đó có câu trả lời cho tôi. Cảm ơn bạn!
Đó là những gì tôi đã luôn luôn giả định. Và, trên thực tế, toán tử AND hoạt động theo cách đó. Ví dụ, tôi có thể làm 'if (isset ($ a) && $ a instanceof SomeClass && $ a-> someMethod() == 'orange')' và nó phải vượt qua từng bước của điều kiện để kiểm tra tiếp theo. Nhưng, tôi không có bất cứ điều gì để ủng hộ tôi ngoại trừ thực tế tôi chỉ biết nó hoạt động. –
Tại sao không thử?'if (true || die()) {echo '1';}' và 'if (true && die()) {echo '1';}' –