Estructuras de control en PHP V: instrucción switch

php

[Control de flujo o estructuras de control en PHP V] Instrucciones Switch

Valencia, 27/09/2012, G.B.
Tras haber conocido ya las estructuras condicionales en PHP con if, if/else y if/elseif/else, pasamos ya a la última: la estructura switchYa sabemos que las sentencias o estructuras condicionales se utilizan para realizar distintas acciones basadas en diferentes condiciones. Switch actúa de la misma manera que lo hace la estructura if/elseif/else, pero permite simplificar el código cuando las condiciones o posibilidades son muchas.

La expresión o variable que va después de la palabra reservada switch se evalúa utilizando la palabra case (caso en inglés) seguida de dos puntos. Si hay un equivalente, una coincidencia, se ejecutará la sentencia tras ‘case‘. En caso contrario, se sale de la instrucción utilizando la palabra reservada break y se pasa al siguiente ‘caso’ o case, en donde se evaluará la siguiente sentencia,  y así hasta llegar a un case en el que se cumpla.  En el caso de que no se cumple ninguna de las equivalencias presentadas tras cada uno de los ‘case’, es decir, en el caso de que no haya ninguna equivalencia, se puede utilizar una instrucción por defecto representada por la palabra default, también  seguida de dos puntos. La estructura condicional switch está ‘encerrada’ entre brackets { }.

Pero mejor veamos una representación de la sintaxis de switch:

switch ($nombreVariable) {
case valor1:
      (sentencia1);
      break; // salida que se utiliza opcionalmente
case valor2:
      (sentencia2);
      break;
case valor3:
      (sentencia3);
      break;
case valor4:
      (sentencia4);
      break;
case valor5:
      (sentencia5);
      break;
defaulf:
      (sentencia o instrucción predeterminada); // esta se ejecutará en caso de que ninguna de las equivalencias anteriores se cumpla
}

Resumiéndolo:

switch (variable) {
   case: sentencia1;
   break; 
case: sentencia2;
   break; 
default: sentencia predeterminada;

Para entenderlo mejor, vamos a adaptar el ejemplo del post anterior a la estructura switch, aumentando con esa instrucción las posibilidades:

<?php
$hora = date ('H');
switch ($hora) {
   case 7:
   echo 'Es hora de levantarse, campeón';
   break; // salida que se utiliza opcionalmente
case 8:
   echo '¿Estás despierto ya?';
   break;
case 10:
   echo '¿Un cafetito?';
   break;
case 13:
   echo 'Falta menos para comer. ¿Tienes hambre ya?';
   break;
case 14:
   echo 'A comer!';
   break;
case 16:
   echo '¿Te apetece otro café?';
   break;
case 19:
   echo 'Descansa un poco: apaga el ordenador.';
   break;
case 20:
   echo 'Queda menos para cenar. ¿Tienes hambre?';
   break;
case 23:
   echo 'El día ya casi ha pasado. Debes estar cansado';
   break;
case 24:
   echo '¿Por qué no te vas a dormir?';
   break;
default:
   echo '<h2>Bienvenido a Aprendiendo PHP</h2>'; /* Esta es la frase por defecto que aparecerá en formato Título 2 en el caso de que no se cumpla ninguna de las equivalencias presentadas */
   break; 
}
?>

Ejecutar ejemplo

Ya sólo nos queda  ver -respecto a las estructuras condicionales en PHP- otro tipo de operador condicional que equivale a la estructura if/else denominado operador ternario. En el próximo post…


Lecturas recomendadas:
Switch
PHP Instrucción Switch
PHP Switch Statement

Control de flujo o estructuras de control en PHP (I): una introducción

Introducción  a las sentencias If

 

Valencia, 23/06/2012, G.B.
Ya sabemos un poco más sobre PHP, pero hay algo muy importante que hemos dejado de lado hasta ahora: me refiero a las estructuras de control de flujo o estructuras condicionales. ¿Y qué son?

Todo lenguaje de programación dispone de este tipo de estructuras que nos permiten ‘ir hacia un sitio u otro’, conseguir un resultado u otro dependiendo del contexto, de la interacción con el usuario o con una variable. Así, podemos decidir qué hacer o qué respuesta dar dependiendo de las posibles condiciones, es un flujo de causa-efecto, por decirlo de algún modo: causa 1: efecto uno,  consecuencia o respuesta uno; causa 2: efecto, consecuencia o respuesta 2, y así indefinidamente, dependiendo de la versatilidad o complejidad de la estructura de control que necesitemos programar para nuestra página web. Con ello, damos cierta interactividad y versatilidad a nuestras páginas.

Así, podemos decir que las sentencias o estructuras condicionales se utilizan para realizar distintas acciones basadas en condiciones diferentes.

Todo script PHP está construido en base a una serie de sentencias. Una sentencia puede ser una asignación, una llamada de función, un ciclo, una sentencia condicional o incluso una sentencia que no hace nada (una sentencia vacía). Las sentencias generalmente finalizan con un punto y coma. Adicionalmente, las sentencias pueden agruparse en un conjunto de sentencias, encapsulándolas entre corchetes. Un grupo de sentencias es una sentencia por sí misma también.
Fuente: http://www.php.net/manual/es/control-structures.intro.php

Las estructuras de control son por tanto secuenciales, siguen un flujo. Veámoslo con un clásico ejemplo (en este primer post todavía sin código):

Si la página web se carga por la mañana, imprime el mensaje de texto “Buenos días”;
Si la página web se carga por la tarde,  imprime el mensaje de texto “Buenas tardes”
Si la página web se carga por la noche,  imprime el mensaje de texto “Buenas noches”

Traduciendo el anterior ejemplo escrito en lenguaje natural a lenguaje PHP, tendríamos que utilizar una estructura de control de flujo del tipo If… elseIf… else (basada en el inglés).  La anterior estructura de flujo (ejemplo en azul) imprimiría (mostraría) un determinado texto de bienvenida dependiendo de la franja horaria en la que el usuario cargue nuestra página web. Pero hay más tipos de estructuras de control de flujo. Todas ellas las veremos en el próximo post., con ejemplos en PHP, por supuesto. Dejo un adelanto de la primera clase de estructuras de control de flujo que vamos a ver, me refiero a las sentencias If:

Bueno, hasta aquí la introducción. En los siguientes posts nos adentraremos más en las estructuras de control, empezando, además de por poner ejemplos de código, por su clasificación, basada en el uso que le damos. Como ya habréis podido observar, las estructuras de control son simples secuencias lógicas trasladadas a la sintaxis propia del lenguaje que vayamos a utilizar, en nuestro caso, PHP.

 

Hasta pronto, prometido (ahora sí!)

 

Lecturas recomendadas:
Estructuras de control en la Wikipedia y este otro enlace (si os manejís bien en la lectura del inglés):  If… Else Statements