Boletin de ejercicios php sobre SWITCH

En este boletín vamos a trabajar el condicional SWITCH con ejercicios de dificultad progresiva. Te recomiendo que los intentes antes de ver las soluci

Condicionales

Ejercicio 1

Enunciado del ejercicio 1

La cadena de montaje

Nuestro jefe de proyectos nos ha pedido que desarrollemos un pequeño script para redireccionar las páginas según su url. Para esto nos especifica que tendremos disponible una variable llamada $controlador con el nombre de la página. También nos dice que los posibles valores de esta variable pueden ser:

  1. contacto
  2. inicio
  3. blog
  4. empleados
  5. quienes-somos
  6. sitemap

Para la primera versión de este redireccionador tan solo nos piden que mostremos un mensaje avisando del controlador seleccionado. Este primer mensaje lo puedes hacer con la función echo.

<?php
switch ( $controlador ) {
case 'contacto':
echo 'Controlador de página de contacto';
break;
case 'inicio':
echo 'Controlador de página de Inicio';
break;
case 'blog':
echo 'Controlador de página de blog';
break;
case 'empleados':
echo 'Controlador de página de empleados';
break;
case 'quienes-somos':
echo 'Controlador de página de Quienes Somos';
break;
case 'sitemap':
echo 'Controlador de página de Mapa del sitio';
break;
}
?>

Como has visto en la solución es una aplicación básica del condicional SWITCH. Poco hay que explicar, tan solo fijarse que cada caso compruebo valores de tipo texto y por lo tanto debo escribir las comillas. 

Cada controlador en un case distinto y su respectivo break; que no es obligatorio (esto lo podrás comprobar en el siguiente ejercicio).

Ejercicio 2

Enunciado del ejercicio 2

Siguiendo con el problema anterior, nuestro jefe de proyectos ahora quiere que realicemos la version 1.1 del script redireccionador, en la que debemos incluir varias modificaciones:

  • Cada controlador ahora tendrá un fichero asignado, el cual tendremos que indicarlo mediante el uso de una variable: $fichero. El fichero se llamará igual que el controlador con dos excepciones:
    1. El fichero tiene la extensión .php
    2. Si el nombre del controlador incluye un guión, el fichero se llamará igual pero con barra baja.
  • Si el controlador no coincide con ninguno de los indicados se deberá indicar en la variable de $fichero el archivo error404.php
<?php
switch ( $controlador ) {
case 'contacto':
$fichero = 'contacto.php';
break;
case 'inicio':
$fichero = 'inicio.php';
break;
case 'blog':
$fichero = 'blog.php';
break;
case 'empleados':
$fichero = 'empleados.php';
break;
case 'quienes-somos':
$fichero = 'quienes_somos.php';
break;
case 'sitemap':
$fichero = 'sitemap.php';
break;
default:
$fichero = 'error404.php';
}
?>

Las cosas se han puesto un pelín más complicadas, vamos a ver que incluye la revisión del ejercicio 1:

  • En primer lugar ahora ya no debemos hacer un echo, por lo tanto, he sustituido estas líneas por otras donde asigno a la variable que me piden ($fichero) el nombre del fichero correspondiente: el mismo más la extensión ".php" y además en el caso de "quienes-somos" he sustituído el guión por barra baja.
  • Por último, debemos tener en cuenta un caso más para nuestro SWITCH, uno que no coincide con un valor concreto de la variable sobre la que gira el condicional ($controlador). Este caso hay que tratarlo con la sentencia especial para este cometido: default. Si te fijas verás que no he escrito un break; al final de este caso, y es que es innecesario ya que no hay más casos tras él.

Ejercicio 3

Enunciado del ejercicio 3

Se nos viene la versión 1.2 del ejercicio 1, así, sobre lo que hicimos en el ejercicio 2 nos piden nuevas modificaciones. La página web del sitio será multilingue, así que debemos tener en cuenta que habrña varios los valores de la variable $controlador  para un mismo resultado, en concreto nos han indicado los siguientes equivalentes para inglés y francés respectivamente:

  1. Equivalentes de contacto: "contact" y "contact-fr"
  2. Equivalentes de inicio: "home" y "home-fr"
  3. Equivalentes de blog: "blog-en" y "le-blog"
  4. Equivalentes de empleados: "employees" y "le-personnel"
  5. Equivalentes de quienes-somos: "about-us" 
  6. Equivalentes de sitemap: NO tiene
<?php
switch ( $controlador ) {
case 'contact':
case 'contact-fr':
case 'contacto':
$fichero = 'contacto.php';
break;
case 'home':
case 'home-fr':
case 'inicio':
$fichero = 'inicio.php';
break;
case 'blog-en':
case 'le-blog':
case 'blog':
$fichero = 'blog.php';
break;
case 'employees':
case 'le-personnel':
case 'empleados':
$fichero = 'empleados.php';
break;
case 'about-us':
case 'quienes-somos':
$fichero = 'quienes_somos.php';
break;
case 'sitemap':
$fichero = 'sitemap.php';
break;
default:
$fichero = 'error404.php';
}
?>

En esta solución debemos dominar el uso de la sentencia BREAK. Así debemos saber que si no usamos un break; en un case, las líneas de código de este se ejecutarán y, posteriormente, se ejecutarán las del siguiente case sin que se mire si ese caso se cumple o no. La ejecución de código del SWITCH no se terminará hasta que se encuentre un break; o este se termine.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.