Resumen: Entrega nº20 del Tutorial básico del programador web: PHP desde cero.
Codificación aprenderaprogramar.com: CU00820B 

 

 

SWITCH PHP

Las instrucciones if...else if...else if permiten resolver prácticamente todas las decisiones que haya que tomar en programación, pero en ocasiones nos encontraremos con casos en que queremos evaluar condiciones con una estructura que hacen más cómodo usar una instrucción alternativa: switch.

 

Supongamos una evaluación de este tipo:

if ($variable == Valor1) {

... sentencias;

} else if( $variable == Valor2) {

... sentencias;

} else if ($variable == Valor3) {

... sentencias;

} else {

... sentencias;

}

 

 

Se trata de un caso en que tenemos varias alternativas para realizar una acción determinada según el valor tomado por una variable. Para estos casos la mayoría de los lenguajes de programación incluyen una instrucción que permite "seleccionar" entre los posibles valores de una variable: la instrucción switch (en español: seleccionar).

La instrucción switch es una forma de expresión de un anidamiento múltiple de instrucciones if ... else. Su uso no puede considerarse, por tanto, estrictamente necesario, puesto que siempre podrá ser sustituida por el uso de if. No obstante, a veces resulta útil al introducir eficiencia y mayor claridad en el código.

 

 

ESTRUCTURA GENERAL DE UNA EXPRESIÓN SWITCH

La sintaxis será (expresión será normalmente una variable cuyo contenido queremos evaluar, pero puede ser una operación matemática, una expresión booleana, etc.):              

/* Ejemplo switch - aprenderaprogramar.com */

switch (expresión) {

        case valor1:

        instrucciones;

        break;

 

        case valor2:

        instrucciones;

        break;

        .

        .

        .

        default:

        sentencias;

        break;

 }

          

/* Ejemplo switch - aprenderaprogramar.com */

switch (expresión) {

        case valor1:

        case valor2:

        case valor3:

        instrucciones;

        break;

 

        case valor4:

        instrucciones;

        break;

        .

        .

        .

        default:

        sentencias;

        break;

 }

 

 

Esquemáticamente en forma de diagrama de flujo:

switch php ejemplo

 

 

break es opcional (pero en general recomendable) y provoca que una vez encontrada una coincidencia termine la evaluación de casos (provoca un salto pasando el control del programa o flujo de ejecución a la instrucción inmediata siguiente fuera del switch). Si no se incluye, se evaluarían el resto de casos (ejecutándose si fueran ciertos). De no incluirse break, podría producirse que se ejecuten dos o más casos.

La cláusula default es opcional y representa las instrucciones que se ejecutarán en caso de que no se verifique ninguno de los casos evaluados. El último break dentro de un switch (en default si existe esta cláusula, o en el último caso evaluado si no existe default) también es opcional, pero lo incluiremos siempre para ser metódicos.

Se permite evaluar tanto números como cadenas de texto o valores booleanos. switch solo permite evaluar valores concretos de la expresión: no permite evaluar intervalos (pertenencia de la expresión a un intervalo o rango) ni expresiones compuestas.

 

 

EJEMPLO

Vamos a ver ahora cómo podemos obtener un mismo resultado usando if o usando switch. Escribe ahora el código de ejemplo de uso de if que mostramos a continuación y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

//Ejemplo uso if else aprenderaprogramar.com

$variable=2;

if($variable==1) {

echo '$variable es igual a 1.';

} else if($variable==2) {

echo '$variable es igual a 2.';

} else if($variable==3) {

echo '$variable es igual a 3.';

} else {

echo '$variable no es igual a 1, 2 o 3.';

}

?>

<?php

$variable=2;

switch($variable) {

case 1:

echo '$variable es igual a 1.';

break;

case 2:

echo '$variable es igual a 2.';

break;

case 3:

echo '$variable es igual a 3.';

break;

default:

echo '$variable no es igual a 1, 2 o 3.';

}

?>

 

 

 

Escribe ahora el código de ejemplo de uso de switch hemos mostrado y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado.

El resultado comprobamos que en ambos casos es: $variable es igual a 2.

Si cambiamos $variable=2 por $variable=5 al inicio de código el resultado sería:  $Variable no es igual a 1, 2 o 3.

Una diferencia importante respecto a las instrucciones if ... else if ... else es que se requiere de la instrucción break para salir del switch al terminar las instrucciones correspondientes a un case. Sólo podemos especificar un valor en cada case, no se admite indicar más de un valor. Sin embargo, si dejamos un case en blanco y omitimos el break, damos lugar a que se ejecuten ciertas instrucciones si el valor coincide con alguno de los case en juego. Esto lo veremos más claro con un ejemplo.

Escribe ahora estos otros códigos y guárdalos con nombres de archivo como ejemplo3.php y ejemplo4.php. A continuación, sube los ficheros al servidor y visualiza el resultado.

<?php

//Ejemplo uso if else aprenderaprogramar.com

$variable=2;

if($variable==1) {

echo '$Variable es igual a 1.';

} else if($variable==2 OR $variable==3) {

echo '$Variable es igual a 2 o 3.';

}else {

echo '$Variable no es igual a 1, 2 o 3.';

}

?>

<?php

$variable=2;

switch($variable) {

case 1:

//Se ejecuta si $variable vale 1

echo '$Variable es igual a 1.';

break;

case 2:

case 3:

//Se ejecuta si $variable vale 2 o 3

echo '$Variable es igual a 2 o 3.';

break;

default:

//Se ejecuta en cualquier otro caso

echo '$Variable no es igual a 1, 2 o 3.';

}

?>

 

 

 

En cualquiera de las dos formas mostradas, la salida obtenida sería: $variable es igual a 2 o 3.

En este caso, al evaluarse la segunda instrucción case no se encuentra ningún break por lo que se siguen ejecutando las instrucciones siguientes al tercer case, aún cuando $variable es diferente de 3, ya que al no existir un break anterior los casos 2 y 3 quedan “agrupados”. Más aún, si borramos el break del tercer case también se ejecutarán las instrucciones siguientes a default, y la salida sería entonces:

$variable es igual a 2 o 3.

$variable no es igual a 1, 2 o 3.

 

Por ello es muy importante que cuando escribas una instrucción switch pongas break en todos los case, o bien que si dejas algún break sin escribir sea porque conscientemente quieras hacerlo y no por olvido.

 

 

EJERCICIO 1

Analiza el siguiente código PHP:

//Ejemplo de uso switch PHP aprenderaprogramar.com

        switch ($mes) {

            case 1:

            echo ("El mes es enero");

            break;

            case 2: echo ("El mes es febrero"); break;

            case 10: echo ("El mes es octubre"); break;

            default: echo ("El mes no es enero, febrero ni octubre"); break;

        }

 

Responde a las siguientes cuestiones:

a) ¿Qué es lo que hace este código?

b) Completa el código de forma que añadas las etiquetas y definas el valor de $mes = 1. Sube el fichero al servidor y comprueba el resultado. ¿Cuál es el código completo? ¿Cuál es el resultado obtenido por pantalla?

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.

 

 

EJERCICIO 2

Considera estás desarrollando una web donde trabajas con tipos de motor (suponemos que se trata del tipo de motor de una bomba para mover fluidos). Define una variable $tipoMotor y asígnale valor 3. Los valores posibles son 1, 2, 3, 4. A través de un condicional switch haz lo siguiente:

a)      Si el tipo de motor es 0, mostrar un mensaje indicando “No hay establecido un valor definido para el tipo de bomba”.

b)      Si el tipo de motor es 1, mostrar un mensaje indicando “La bomba es una bomba de agua”.

c)       Si el tipo de motor es 2, mostrar un mensaje indicando “La bomba es una bomba de gasolina”.

d)      Si el tipo de motor es 3, mostrar un mensaje indicando “La bomba es una bomba de hormigón”.

e)      Si el tipo de motor es 4,mostrar un mensaje indicando “La bomba es una bomba de pasta alimenticia”.

f)       Si no se cumple ninguno de los valores anteriores mostrar el mensaje “No existe un valor válido para tipo de bomba”.

 

¿Cuál es el código completo? ¿Cuál es el resultado obtenido por pantalla?

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

 

Descargar archivo: