El tutorial o código que hallarás en este artículo es la solución más fácil y válida que hallamos a esta duda o dilema.
Solución:
Su primer ejemplo es simplemente incorrecto. Necesitas elseif
en lugar de solo else
.
Si utiliza if..elseif...
o switch
es principalmente una cuestión de preferencia. El rendimiento es el mismo.
Sin embargo, si todas sus condiciones son del tipo x == value
con x
siendo el mismo en todas las condiciones, switch
suele tener sentido. Yo también solo usaría switch
si hay más de, por ejemplo, dos condiciones.
Un caso donde switch
en realidad le da una ventaja de rendimiento si la parte variable es una llamada de función:
switch(some_func())
case 1: ... break;
case 2: ... break;
Después some_func()
solo se llama una vez mientras está con
if(some_func() == 1)
elseif(some_func() == 2)
se llamaría dos veces, incluidos los posibles efectos secundarios de la llamada a la función dos veces. Sin embargo, siempre puedes usar $res = some_func();
y luego usar $res
en tus if
condiciones – para que pueda evitar este problema por completo.
Un caso en el que Ud. no poder use el interruptor en absoluto es cuando tiene condiciones más complejas – switch
solo funciona para x == y
con y
siendo un valor constante.
Según phpbench.com, if/elseif es un poco más rápido, especialmente cuando se usa una comparación estricta (===).
Pero solo importará realmente si desea eliminar microsegundos en una función que se llamará miles de veces.
regla general es usar switch
siempre que el número de condiciones sea mayor que 3 (para legibilidad).
if
/ else if
/ else
es más flexible (por lo tanto mejor), pero switch
es un poco más rápido porque solo calcula la condición una vez y luego verifica la salida, mientras que if
tiene que hacer esto cada vez.
EDITAR: Parece que switch
es más lento que if
después de todo, podría jurar que no fue así…
Reseñas y valoraciones del tutorial
Si guardas alguna indecisión o forma de mejorar nuestro enunciado eres capaz de ejecutar una referencia y con mucho placer lo ojearemos.