Switch y Expresión Match en PHP
Aprende a evaluar múltiples opciones de forma limpia con la sentencia switch y la moderna expresión match introducida en PHP 8.
Evaluación Multicaso con Switch
La sentencia switch se utiliza para ejecutar diferentes bloques de código según el valor de una única expresión. Es una alternativa más legible que concatenar múltiples bloques if...elseif cuando evaluamos la misma variable.
Sintaxis de Switch:
switch ($variable) {
case valor1:
// Código si $variable == valor1
break;
case valor2:
// Código si $variable == valor2
break;
default:
// Código si no coincide con ningún caso
}
break! Si omites la palabra reservada break, PHP continuará ejecutando las instrucciones del siguiente case automáticamente, incluso si su condición no coincide (fenómeno conocido como fall-through).
La Moderna Expresión Match (PHP 8.0+)
PHP 8 introdujo match, una versión más potente, concisa y segura que switch.
Diferencias Clave entre Switch y Match:
| Característica | switch (Clásico) |
match (PHP 8+) |
|---|---|---|
| Comparación | Débil (==, convierte tipos) |
Estricta (===, respeta el tipo de dato) |
| Retorno de Valor | No retorna valor directamente (requiere asignar en variables) | Retorna un valor directamente |
| Control de Flujo | Obligatorio usar break para evitar fallthrough |
No requiere break (evalúa y retorna una sola rama) |
| Sintaxis | Extensa con llaves y dos puntos | Concisa con flechas => |
⚡ Ejemplo de Switch vs Expresión Match
Compara cómo resolver la asignación de un rol de usuario y su color distintivo usando switch y match:
<!DOCTYPE html>
<html>
<body>
<h2>Control de Selección en PHP 8.3</h2>
<?php
// 1. Ejemplo con SWITCH clásico
$diaSemana = "martes";
echo "<h4>1. Evaluando día con switch:</h4>";
switch ($diaSemana) {
case "lunes":
echo "<p>Inicio de semana: Planificación del sprint en Kilopolis.</p>";
break;
case "martes":
case "miercoles":
case "jueves":
echo "<p>Jornada técnica: Desarrollo de módulos y clases en vivo.</p>";
break;
case "viernes":
echo "<p>Viernes de Deploy y revisión de código.</p>";
break;
default:
echo "<p>Fin de semana: Tiempo de descanso o práctica libre.</p>";
}
// 2. Ejemplo con la moderna expresión MATCH de PHP 8
echo "<hr>";
echo "<h4>2. Asignación de Insignia con match (PHP 8+):</h4>";
$rol = "instructor"; // Prueba cambiando a: "alumno", "admin" o "invitado"
$insignia = match ($rol) {
"admin" => "<span style='background:#ef4444; color:#fff; padding:4px 10px; border-radius:12px;'>👑 Administrador</span>",
"instructor" => "<span style='background:#2563eb; color:#fff; padding:4px 10px; border-radius:12px;'>🎓 Instructor Kilopolis</span>",
"alumno" => "<span style='background:#10b981; color:#fff; padding:4px 10px; border-radius:12px;'>⭐ Alumno Bootcamp</span>",
default => "<span style='background:#64748b; color:#fff; padding:4px 10px; border-radius:12px;'>👤 Visitante</span>"
};
echo "<p>Usuario con rol <strong>{$rol}</strong>: {$insignia}</p>";
// 3. Match con múltiples condiciones por coma
$calificacion = 95;
$nivel = match (true) {
$calificacion >= 90 => "Sobresaliente (Aprobado con honores)",
$calificacion >= 70 => "Aprobado",
default => "Requiere refuerzo"
};
echo "<p>Nota {$calificacion}/100: <strong>{$nivel}</strong></p>";
?>
</body>
</html>
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de PHP y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.