2010-12-03 12 views
16
ejecución

vamos a decir que tengo algo como esto:PHP - si (condición)

if(1 == 0 && do_stuff()) { 
    ... 
} 

Obviamente 1 no es 0, por lo que no tiene sentido para comprobar la otra condición. Entonces, ¿PHP alguna vez ha ejecutado do_stuff()?

+1

Si siempre quiere "do_stuf" para ser ejecutado, usted podría, por supuesto, tiene como primera condición en el Si. Ver mi respuesta para los detalles. –

Respuesta

35

No - PHP utiliza la evaluación diferida (a veces llamada evaluación de cortocircuito), por lo que si la primera condición en una AND lógica es falsa, no intentará evaluar ninguna de las demás condiciones.

Del mismo modo, si estuvieras haciendo un quirófano y la primera condición fuera cierta, no evaluaría el segundo.

+11

Esta es la razón por la cual debe poner costosas pruebas a la derecha – Gordon

+2

En muchos casos, prueba con variables, por lo que los costos de las pruebas son insignificantes. O tiene una prueba que "nunca" fallará (como '$ depuración 'en producción). Luego otro enfoque es poner la prueba, que probablemente fallará, a la izquierda. – KingCrunch

+1

Esto es cierto cierto sobre PHP. De todos modos, vale la pena notar una diferencia con respecto a la misma funcionalidad en JavaScript. En PHP, el resultado siempre es un valor booleano, mientras que en JavaScript es el valor de la última subexpresión evaluada. – Ando

1

NO, no ejecutará do_stuff() en esta condición.

4

Si la primera condición es falsa, entonces PHP nunca se ejecuta la segunda condición en la & & operador

Cuestiones relacionadas