Características del switch php

php switch

Compatibilidad PHP 4, PHP 5, PHP 7.

Una declaración switch en php es como una serie de declaraciones if else if aplicadas a la misma expresión. A la cual es posible que deba comparar la misma variable (o expresión) con diferentes valores (casos) e implementar un código diferente dependiendo de eso, y esa es la función principal de una declaración switch en php.

A diferencia de algunos lenguajes de programación, la instrucción continue se puede utilizar y switch en php funciona como una instrucción break. Si está utilizando switch dentro de un ciclo y desea pasar al siguiente ciclo en el ciclo exterior, utilice continue 2.

Es importante resaltar que la declaración switch / case en php realiza una comparación no estricta, es decir, no compara el valor y el tipo juntos.

En los dos casos de los ejemplos siguientes proporcionarán dos formas totalmente diferentes de escribir el mismo código, uno usa una serie de if y declaraciones elseif, y la otra con una sentencia switch en php:

Sintaxis del switch en PHP

switch(expression){      
case value1:      
 //código a ejecutar  
 break;  
case value2:      
 //código a ejecutar   
 break;  
......      
default:       
 código que se ejecutará if no coinciden todos los casos;    
}  

Cómo funciona el switch php

El funcionamiento es sencillo, pues primero realice un cálculo en una expresión simple n (generalmente una variable). Compare el valor de la expresión con el valor de cada caso en la estructura. Si hay una coincidencia, se ejecuta el código asociado con el caso.

Después de que se ejecute el código, use break para evitar que el código salte al siguiente caso para continuar con la ejecución. La declaración predeterminada se usa cuando no hay alguna coincidencia (es decir, ningún caso es verdadero).

Ejemplo del uso en la estructura switch php

<?php
if ($i == 0) {
    echo "i es igual a 0";
} elseif ($i == 1) {
    echo "i es igual a 1";
} elseif ($i == 2) {
    echo "i es igual a 2";
}
switch ($i) {
    case 0:
        echo "i es igual a 0";
        break;
    case 1:
        echo "i es igual a 1";
        break;
    case 2:
        echo "i es igual 2";
        break;
}
?>

A continuación veremos el caso del segundo ejemplo y usaremos string en una estructura switch.

<?php
switch ($i) {
    case "apple":
        echo "i is apple";
        break;
    case "bar":
        echo "i is bar";
        break;
    case "cake":
        echo "i is cake";
        break;
}
?>

Para evitar cometer errores, es muy importante comprender cómo switch. El lenguaje implementa una declaración switch línea por línea (en realidad, una frase por frase). Inicialmente, el lenguaje no ejecuta ningún código, y el código solo se ejecuta cuando se alcanza una declaración case(caso) que da un valor idéntico al valor en una expresión switch

El código PHP continúa ejecutando declaraciones hasta que se alcanza el final de un bloque switch, o hasta que se alcanza la primera declaración break, por lo que si no agrega una declaración break al final de una declaración case, el lenguaje seguirá ejecutando el código para la case siguiente declaración. Veamos un ejemplo de esto:

<?php
switch ($i) {
    case 0:
        echo "i es igual 0";
    case 1:
        echo "i es igual 1";
    case 2:
        echo "i es igual 2";
}
?>

Pero si el valor de la variable ‎$i aquí es 0, el lenguaje ejecutará echo todas las declaraciones, pero si el valor es 1, el lenguaje ejecutará las echo dos últimas declaraciones. Y para obtener el resultado esperado mostrando el enunciado ‘i es igual a 2’, el valor de la variable debe ser ‎$i igual al valor 2.

Para ello, es necesario no olvidar los enunciados break que es posible que no necesite utilizar estos enunciados en veces. La condición en una declaración se procesa switch solo una vez en php y el resultado se compara con cada declaración case. En una declaración elseif, la condición se procesa nuevamente. 

Entonces, si la condición que desea verificar es más compleja que una simple comparación, o si está utilizando un ciclo cerrado, podría ser una declaración switch más rápida en php. Puede ser una declaración case vacía, en cuyo caso el lenguaje pasa a la case siguiente declaración .

<?php
switch ($i) {
case 0:
case 1:
case 2:
    echo "i es menor que 3 pero no negativo";
    break;
case 3:
    echo "i is 3";
}
?>

Hay un tipo de caso especial que es predeterminado, y este caso coincide con todo lo que no coincide con los otros casos. Veamos un ejemplo claro de esto:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
       echo "i  no es igual a 0, 1 o 2";
}
?>  

Se puede escribir una declaración switch en php utilizando la sintaxis alternativa de las estructuras de control. Para obtener más información, consulte la sintaxis alternativa de las estructuras de control.

<?php
switch ($i):
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
endswitch;
?>

Puede usar un punto y coma en lugar de dos puntos después de una declaración case como:

<?php
switch($idioma)
{
    case 'Español';
    case 'Ingles';
    case 'Frances';
        echo 'Muy bien';
    break;
    default;
        echo 'Por favor, realice otra selección...';
    break;
}
?>

Precauciones del switch en php

  • No escriba el número de componente después del caso, seguido de dos puntos:
  • No escriba el intervalo de juicio después del caso, como ($ foo> 20 o $ foo == 30)
  • La variable en el conmutador es preferiblemente un número entero o una cadena, porque el juicio booleano es más adecuado para if … else
  • Si se elimina la ruptura en cada caso, los bloques de código en cada caso se ejecutarán a su vez
  • No es necesario que la declaración de cambio se escriba por defecto, pero como un buen hábito, se recomienda mantener la declaración por defecto.

Registro de cambios del switch en PHP

PropiedadFunción
7.0.0Tener más de un caso predeterminado desencadena el error E_COMPILE_ERROR.