
Hugo Ivan Landeros Dimas
Pregunta¿Alguien me puede explicar por qué el elemento “undefined” que es un string PHP me lo toma como si fuera un número mayor a 7? Y en consecuencia me imprime esa validación.
El ejercicio lo solucioné añadiendo is_int($edad) en el caso mayor a 7 para que también valide si es un número entero y si no entre al default, pero me llama la atención por qué sucede esto.
Toma el string undefined como número mayor a 7:
$edades = [3, 4, 5, 6, 7, 8, 9, "undefined"]; function imprimirMensaje($edad, $parte) { echo "El estudiante con $edad años tendrá sus juguetes en la parte $parte de la bodega. <br><br>"; } foreach ($edades as $edad) { switch ($edad) { case $edad < 5: imprimirMensaje($edad, "inferior"); break; case $edad >= 5 && $edad <= 7: imprimirMensaje($edad, "media"); break; case $edad > 7: imprimirMensaje($edad, "alta"); break; default: echo "El estudiante sin edad definida tendrá sus juguetes en la bodega de al lado."; break; } }
Solucionado (entra el default con el elemento undefined):
$edades = [3, 4, 5, 6, 7, 8, 9, "undefined"]; function imprimirMensaje($edad, $parte) { echo "El estudiante con $edad años tendrá sus juguetes en la parte $parte de la bodega. <br><br>"; } foreach ($edades as $edad) { switch ($edad) { case $edad < 5: imprimirMensaje($edad, "inferior"); break; case $edad >= 5 && $edad <= 7: imprimirMensaje($edad, "media"); break; case $edad > 7 && is_int($edad): imprimirMensaje($edad, "alta"); break; default: echo "El estudiante sin edad definida tendrá sus juguetes en la bodega de al lado."; break; } }

Ana Belisa Martinez
Oh muy bien!