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: BEl 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: WeekendAquí "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
- Sentencia
switchde PHP — la estructura completa dentro de la cual vivecase. switch— referencia de la palabra claveswitch.- PHP
if...else...elseif— cuando una cadena de condiciones es más legible que unswitch. - Operadores PHP — cómo difieren la comparación flexible
==y la estricta===.