Ejemplo 6: Día de la Semana
Estructura switch-case para múltiples opciones
Descargar archivo dia_semana🎯 Demo en Vivo
Calendario Semanal
¡Selecciona un día!
Días rápidos:
💡 Datos del día:
📖 Explicación del Código
Código PHP Completo
<?php
$dia = 6;
switch ($dia) {
case 1:
echo "Lunes";
break;
case 2:
echo "Martes";
break;
case 3:
echo "Miércoles";
break;
case 4:
echo "Jueves";
break;
case 5:
echo "Viernes";
break;
case 6:
echo "Sábado";
break;
case 7:
echo "Domingo";
break;
default:
echo "No es un día de la semana";
}
?>
📝 Línea 1: Variable de control
$dia = 6;
¿Qué hace? Define la variable que controlará el flujo del switch.
¿Por qué se hace así? Switch necesita una variable para comparar con los diferentes casos.
💡 Concepto: Variable de control
En estructuras switch, una sola variable se evalúa múltiples veces contra diferentes valores posibles.
📝 Líneas 3-25: Estructura switch
switch ($dia) { case 1: echo "Lunes"; break; // ... más casos ... default: echo "No es un día de la semana";}
¿Qué hace? Evalúa la variable $dia contra cada caso y ejecuta el código del caso coincidente.
¿Por qué se hace así? Switch es ideal cuando tenemos una variable que puede tomar varios valores específicos.
💡 Concepto: Palabra clave break
break es crucial en switch. Sin él, PHP ejecutaría todos los casos siguientes (fall-through).
📝 Caso default
default: echo "No es un día de la semana";
¿Qué hace? Se ejecuta cuando ningún caso coincide con la variable.
¿Por qué se hace así? Maneja valores inesperados y hace el código más robusto.
💡 Concepto: Defensive Programming
Siempre incluye un caso default para manejar valores inesperados y prevenir errores.
🔍 Anatomía de la Estructura Switch
1. Expresión switch
switch ($variable)
La variable que se evaluará contra cada caso.
2. Casos (cases)
case valor:
Cada posible valor que puede tener la variable.
3. Bloque de código
// código a ejecutar
Las instrucciones que se ejecutan si hay coincidencia.
4. Break
break;
Termina la ejecución del switch.
5. Default
default:
Se ejecuta si ningún caso coincide.
⚖️ Switch vs If-Else: ¿Cuándo usar cada uno?
✅ Usar SWITCH cuando:
- Comparas una variable contra valores específicos
- Tienes muchos casos (más de 3-4)
- Las condiciones son de igualdad simple
- El código es más legible con switch
switch ($dia) {
case 1: echo "Lunes"; break;
case 2: echo "Martes"; break;
// ...
}
✅ Usar IF-ELSE cuando:
- Las condiciones son complejas
- Usas operadores como >, <, >=
- Tienes pocos casos (2-3)
- Necesitas evaluar múltiples variables
if ($edad >= 18) {
echo "Mayor";
} else {
echo "Menor";
}
🚀 Casos de Uso Avanzados de Switch
Múltiples casos mismo código
Varios casos pueden ejecutar el mismo código.
switch ($dia) {
case 1:
case 2:
case 3:
case 4:
case 5:
echo "Día laboral";
break;
case 6:
case 7:
echo "Fin de semana";
break;
}
Switch con strings
También funciona con cadenas de texto.
switch ($color) {
case "rojo":
echo "Alto";
break;
case "verde":
echo "Pasar";
break;
}
Return en switch
Puedes usar return en funciones.
function getDia($numero) {
switch ($numero) {
case 1: return "Lunes";
case 2: return "Martes";
default: return "Inválido";
}
}
🎯 Conceptos Clave Aprendidos
Estructura Switch
- Ideal para múltiples opciones
- Más legible que muchos if-else
- Solo compara por igualdad
- Requiere break para cada caso
Control de Flujo
- Break termina la ejecución
- Sin break: fall-through
- Default maneja casos no esperados
- Orden de casos puede importar
Best Practices
- Siempre incluir caso default
- Usar break en cada caso
- Mantener casos simples
- Documentar casos complejos
💪 Ejercicio Práctico
Amplía el sistema de días
Practica estos cambios para mejorar tus habilidades:
- Convierte el switch a if-elseif-else y compara la legibilidad
- Añade información del día en inglés junto al español
- Crea un sistema que detecte si el día es laboral, fin de semana o festivo
- Implementa un switch que funcione con los nombres de los días en lugar de números
- Crea una función que reciba el número del día y devuelva un array con información completa
Solución 1: Con if-elseif
<?php
if ($dia == 1) {
echo "Lunes";
} elseif ($dia == 2) {
echo "Martes";
} elseif ($dia == 3) {
echo "Miércoles";
} elseif ($dia == 4) {
echo "Jueves";
} elseif ($dia == 5) {
echo "Viernes";
} elseif ($dia == 6) {
echo "Sábado";
} elseif ($dia == 7) {
echo "Domingo";
} else {
echo "No es un día de la semana";
}
?>
Solución 2: Bilingüe
<?php
switch ($dia) {
case 1:
echo "Lunes / Monday";
break;
case 2:
echo "Martes / Tuesday";
break;
// ... otros días ...
}
?>
Solución 3: Tipo de día
<?php
switch ($dia) {
case 1:
case 2:
case 3:
case 4:
case 5:
echo "Día laboral";
break;
case 6:
case 7:
echo "Fin de semana";
break;
default:
echo "Día inválido";
}
?>
Solución 4: Con strings
<?php
$nombreDia = "lunes"; // en minúsculas
switch ($nombreDia) {
case "lunes":
echo "Día 1";
break;
case "martes":
echo "Día 2";
break;
// ... otros días ...
default:
echo "Día no válido";
}
?>
Solución 5: Función con array
<?php
function getDiaInfo($numero) {
switch ($numero) {
case 1:
return ["nombre" => "Lunes", "ingles" => "Monday", "tipo" => "laboral"];
case 2:
return ["nombre" => "Martes", "ingles" => "Tuesday", "tipo" => "laboral"];
case 6:
return ["nombre" => "Sábado", "ingles" => "Saturday", "tipo" => "fin_semana"];
case 7:
return ["nombre" => "Domingo", "ingles" => "Sunday", "tipo" => "fin_semana"];
default:
return ["nombre" => "Inválido", "ingles" => "Invalid", "tipo" => "invalido"];
}
}
$info = getDiaInfo(1);
echo $info['nombre']; // Lunes
?>