Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Lecciones de PHP - Lección 8-2 - El operador switch

10/05/2025, by Ivan

En la lección anterior conocimos el operador if. Este nos permite comprobar si una condición es verdadera y, según el resultado, ejecutar las acciones necesarias.


Ahora imaginemos que necesitamos hacer diez comprobaciones y, dependiendo de los resultados, ejecutar una de diez acciones. Por supuesto, podríamos usar if como en este ejemplo:

<?php
  if($x == 1){
    // acciones
  }
  if($x == 2){
    // acciones
  }
  if($x == 3){
    // acciones 
  }
  if($x == 4){
    // acciones 
  }
  if($x == 5){
    // acciones 
  }
  if($x == 6){
    // acciones 
  }
  if($x == 7){
    // acciones 
  }
  if($x == 8){
    // acciones
  }
  if($x == 9){
    // acciones 
  }
  if($x == 10){
    // acciones
  }
?>

Este método funcionará, pero para casos así es mejor usar el operador switch.

PHP switch

El operador switch permite comprobar el valor de una expresión bajo múltiples condiciones. Vamos a reescribir el ejemplo anterior usando switch:

<?php
  switch ($x){
    case 1:
      // acciones   
    break;
    case 2:
      // acciones       
    break;
    case 3:
      // acciones       
    break;
    case 4:
      // acciones       
    break;
    case 5:
      // acciones       
    break;
    case 6:
      // acciones       
    break;
    case 7:
      // acciones       
    break;
    case 8:
      // acciones       
    break;
    case 9:
      // acciones       
    break;
    case 10:
      // acciones       
    break;
    default:   
      // acciones si ninguna de las anteriores coincidió
  }
?>

Como mencioné antes, ambos ejemplos funcionan igual, pero en el caso de switch hemos agregado default, que se ejecuta si $x no es igual a ningún valor de 1 a 10.

Veamos cómo funciona la estructura switch. Primero va la palabra clave switch, seguida de paréntesis con la expresión a evaluar. Esa expresión puede ser una variable numérica o de texto. Por ejemplo:

<?php
  switch ($x){
    case 'Hello':
      // acciones
    break;
    case 'Bye':
      // acciones
    break;
  }
?>

Luego vienen llaves. Dentro de ellas especificamos los valores posibles con case y las acciones correspondientes.

<?php
  switch ($x){
    case 'Hello': // valor esperado
      print $x;   // acciones
    break; // fin de esta rama
    case 2:
      $x++;
    break;
  }
?>

El valor a comprobar se indica en case. Si es texto, se encierra entre comillas; si es número, no es necesario. Luego va el signo de dos puntos. Después escribimos las acciones a realizar y finalizamos con break;, que indica el final de esa rama. Si olvidamos break;, el switch continuará ejecutando el siguiente case.

Al final se puede usar default, que se ejecuta si ninguno de los case fue cierto. Dos cosas importantes:
1. No olvides escribir break; después de cada bloque de acciones.
2. Después de default no es obligatorio escribir break;, ya que es el último bloque.

A continuación se muestra el diagrama de flujo de un switch:

Switch блок схема

Como ejemplo, supongamos que $D representa el número de días desde el lunes. El día actual se determina con el resto de la división entre 7:

<?php
// $D: número de días desde el lunes
$x = $D % 7;
switch ($x){
  case 1:
    print 'lunes';
  break;
  case 2:
    print 'martes';
  break;
  case 3:
    print 'miércoles';
  break;
  case 4:
    print 'jueves';
  break;
  case 5:
    print 'viernes';
  break;
  case 6:
    print 'sábado';
  break;
  case 7:
    print 'domingo';
  break;
}
?>