Soy un poco fanático de la optimización (al menos según mi definición) y esta pregunta me ha estado molestando bastante tiempo.PHP || y && optimización lógica
Me pregunto si PHP hace una optimización en los & & y ||: Tomemos el siguiente ejemplo:
$a = "apple";
$b = "orange";
if ($a == "orange" && $b == "orange") {
//do stuff
}
Cuando ese código se ejecuta, se comprobará si $ a es igual a "naranja. " En este caso, no lo es. Sin embargo, hay un operador & &. Dado que la primera parte ($ a == "naranja") ya devolvió false, ¿comprobará PHP si $ b es igual a "naranja"?
que tienen la misma pregunta para ||:
$a = "orange";
$b = "orange";
if ($a == "orange" || $b == "orange") {
//do stuff
}
Cuando se comprueba si $ a es igual a "naranja", que devuelve verdadero. Ya que eso haría que || operador return true, PHP incluso comprobará la segunda parte de || (ya que sabemos que será cierto)?
Espero que tenga sentido aquí, y espero que alguien tenga una respuesta para mí. ¡Gracias!
Eso es lo que siempre he asumido. Y, en la práctica, el operador AND funciona de esa manera. Por ejemplo, podría hacer 'if (isset ($ a) && $ una instancia de SomeClass && $ a-> someMethod() == 'orange')' y tiene que pasar cada paso del condicional para probar el siguiente. Pero no tengo nada que me respalde excepto el hecho de que simplemente sé que funciona. –
¿Por qué no intentarlo?'if (true || die()) {echo '1';}' y 'if (true && die()) {echo '1';}' –