W3docs

case

Aprende a usar la palabra clave case en PHP dentro de switch: sintaxis, fall-through, break y comparación flexible con ejemplos prácticos.

Como desarrollador PHP, es posible que hayas utilizado la sentencia switch para manejar múltiples condiciones en tu código. La palabra clave case es un componente clave de la sentencia switch, y te permite definir acciones específicas a ejecutar según el valor de una variable. Esta página cubre la sintaxis de case, cómo funcionan el fall-through y break, el problema de la comparación flexible, el patrón switch (true) para rangos, y cómo case se relaciona con las cadenas if/elseif.

Sintaxis

La palabra clave "case" se utiliza para definir una acción específica a ejecutar según el valor de una variable dentro de una sentencia "switch". Esta es la sintaxis básica para usar la palabra clave "case" en PHP:

La sintaxis PHP de case

<?php

switch ($variable) {
  case $value1:
    // Code to execute if $variable equals $value1
    break;
  case $value2:
    // Code to execute if $variable equals $value2
    break;
  default:
    // Code to execute if $variable does not equal any of the specified values
}

En este ejemplo, la palabra clave "case" se utiliza para definir acciones específicas según el valor de la variable "$variable". La sentencia break es fundamental: termina el bloque switch y evita el "fall-through" hacia el siguiente caso. Sin ella, PHP continuará ejecutando el código en los casos siguientes hasta encontrar un break o el final del bloque switch. Además, ten en cuenta que el switch de PHP utiliza comparación flexible (==) por defecto, lo que significa que case 0 también coincidirá con "0" o false. Usa lógica de comparación estricta si se requiere una coincidencia exacta de tipo.

Ejemplos

Veamos algunos ejemplos prácticos de cómo se puede usar la palabra clave "case":

Ejemplo de case en PHP

<?php

// Example 1
$day = "Monday";

switch ($day) {
    case "Monday":
        echo "Today is Monday." . PHP_EOL;
        break;
    case "Tuesday":
        echo "Today is Tuesday.";
        break;
    case "Wednesday":
        echo "Today is Wednesday.";
        break;
    default:
        echo "Today is not Monday, Tuesday, or Wednesday.";
}

// Output: Today is Monday.

// Example 2
$grade = 85;

switch (true) {
    case $grade >= 90:
        echo "A";
        break;
    case $grade >= 80:
        echo "B";
        break;
    case $grade >= 70:
        echo "C";
        break;
    case $grade >= 60:
        echo "D";
        break;
    default:
        echo "F";
}

// Output: B

El Ejemplo 1 compara directamente un valor string. El Ejemplo 2 usa el patrón switch (true): cada case contiene una expresión boolean, y el primero que evalúe como true se ejecuta. Esta es la forma idiomática de manejar rangos en un switch, ya que el case simple solo compara por igualdad.

Agrupar casos (fall-through intencional)

Dado que un case sin break cae al siguiente, puedes apilar etiquetas para ejecutar el mismo bloque con varios valores:

<?php

$day = "Sat";

switch ($day) {
    case "Sat":
    case "Sun":
        echo "Weekend";
        break;
    default:
        echo "Weekday";
}

// Output: Weekend

Aquí "Sat" coincide con la primera etiqueta, cae a través del caso vacío "Sun" y ejecuta el bloque compartido. Esta es la única situación en que omitir break es deliberado y no un error.

Beneficios

Usar la palabra clave "case" tiene varias ventajas, entre ellas:

  • Código simplificado: La palabra clave "case" permite crear código más corto y conciso que es más fácil de leer y entender.
  • Mayor legibilidad: La sentencia "switch" ofrece una estructura más limpia que las largas cadenas de sentencias "if/elseif" cuando se compara una sola variable contra múltiples valores.
  • Mayor flexibilidad: La palabra clave "case" permite definir acciones específicas según el valor de una variable, haciendo que tu código sea más adaptable a distintos escenarios.

Conclusión

La palabra clave case te permite definir acciones específicas según el valor de una variable dentro de una sentencia switch. Recuerda las dos cosas que suelen causar problemas: añade break en cada caso a menos que intentes usar el fall-through, y ten cuidado con la comparación flexible al comparar números contra strings.

Temas relacionados

Práctica

Práctica
En PHP, ¿cuáles de los siguientes son tipos de estructuras de control switch?
En PHP, ¿cuáles de los siguientes son tipos de estructuras de control switch?
Was this page helpful?