Introducción al capítulo
Estructuras de Control en PHP. En todo lenguaje de programación, las estructuras de control permiten modificar el flujo de ejecución de un programa. En PHP, estas estructuras nos permiten tomar decisiones (condicionales) o repetir bloques de código (bucles), lo cual es esencial para construir programas dinámicos, interactivos y eficientes. En este capítulo aprenderás a utilizar las distintas estructuras de control que PHP ofrece para lograr un comportamiento más inteligente y flexible en tus scripts.
Samsung 990 PRO 4TB hasta 7.450MB/s PCIe 4.0 NVMe M.2 (2280) SSD interno (MZ-V9P4T0BW)
497,36 € (a partir de enero 14, 2026 20:04 GMT +01:00 - Más informaciónLos precios y la disponibilidad de los productos son exactos a partir de la fecha/hora indicada y están sujetos a cambios. Cualquier información de precio y disponibilidad que se muestre en [los sitios de Amazon relevantes), según corresponda] en el momento de la compra se aplicará a la compra de este producto.)5.1 Sentencias condicionales: if, else, elseif, switch
Las sentencias condicionales permiten ejecutar diferentes bloques de código dependiendo de ciertas condiciones.
🔸 if, else, elseif
La sentencia if evalúa una condición. Si es verdadera (true), ejecuta el bloque de código que contiene. Se puede complementar con else (para ejecutar un bloque alternativo si la condición es falsa) o con elseif para evaluar múltiples condiciones secuenciales.
@Tip: En PHP, los bloques de código van incluidos entre los caractéres { }
Ejemplo:
$edad = 20;
if ($edad < 18) {
echo "Eres menor de edad.";
} elseif ($edad >= 18 && $edad < 65) {
echo "Eres un adulto.";
} else {
echo "Eres un adulto mayor.";
}
En este ejemplo:
- Se evalúa si
$edades menor que 18. - Si no lo es, se evalúa si está entre 18 y 64.
- Si no cumple ninguna condición anterior, se ejecuta el bloque
else.
🔸 switch
Es útil cuando se desea comparar una variable con múltiples valores posibles.
Ejemplo:
$dia = "miércoles";
switch ($dia) {
case "lunes":
echo "Inicio de semana.";
break;
case "miércoles":
echo "Mitad de semana.";
break;
case "viernes":
echo "Fin de semana cercano.";
break;
default:
echo "Día no reconocido.";
}
🔹 Aquí switch compara $dia con cada case, ejecutando el primero que coincida. Es importante destacar que cuando una oción del case es verdadera, se ejecuta su apartado y continua evaluando las restantes opciones. En el caso de encontrar otra opción case que sea verdadera también la ejecutará. Si queremos salir y que no se evaluen el resto de condicionies, tendremos que utilizar la sentencia break. Esto hará que finalicen las coparaciones y y se ejecutará la sentencia que vaya al finalizar el swich.
Podemos además utilizar la opción default, este caso se ejecutará cuando ninguno de los casos anteriores haya sido cierto, y por tanto, se ejecutará este bloque de código.
5.2 Bucles: while, do...while, for, foreach
Los bucles son sentencias que nos permiten repetir bloques de código múltiples veces. Son unos de los pilares de cualquier lenguaje de programación. En PHP disponemos de distintas formas de poder ejecutar blucles de código, veamos cuales son.
🔸 while
Ejecuta un bloque de código mientras la condición sea verdadera. Primero evalúa la condición y en el caso de que sea verdadera entra a ejecutar el código incluido dentro del bucle.
$i = 1;
while ($i <= 5) {
echo "Número: $i <br>";
$i++;
}
🔸 do...while
Un bucle do-while difiere del while en que al menos se ejecuta al menos una vez, y luego se repite mientras la condición sea verdadera. O sea, primero entra en la ejecución del bucle y al final de él se evalúa la condición. En el caso de que sea cierta vuelve al inicio del bucle y si es falsa termina la ejecución y pasa a la siguiente línea de código.
$j = 1;
do {
echo "Contador: $j <br>";
$j++;
} while ($j <= 3);
🔸 for
Al igual que en los anteriores casos for es una sentencia para ejecutar múltiples veces un bloque de código. Es útil cuando se conoce de antemano cuántas veces se debe ejecutar el bloque.
for ($k = 1; $k <= 5; $k++) {
echo "Iteración $k <br>";
}
🔸 foreach
Diseñado para recorrer arrays. Es un bucle que nos permite recorrer los elementos de un array y ejecutar un bloque de código para manipular dicho array.
$nombres = ["Ana", "Luis", "Carlos"];
foreach ($nombres as $nombre) {
echo "Hola, $nombre <br>";
}
5.3 Uso de break y continue
Veamos ahora dos sentencias que nos permiten alterar la ejecución normal de ciertos bloques de código. Estas sentencias son break y continue.
¿Qué es break?
El break es una instrucción que se utiliza para salir inmediatamente de una estructura de control como switch, for, foreach, while, o do...while.
En el contexto de un switch, break impide que se ejecuten los siguientes bloques case una vez que se ha encontrado una coincidencia.
Ejemplo:
$dia = "miércoles";
switch ($dia) {
case "lunes":
echo "Hoy es lunes.";
break;
case "martes":
echo "Hoy es martes.";
break;
case "miércoles":
echo "Hoy es miércoles.";
break;
case "jueves":
echo "Hoy es jueves.";
break;
case "viernes":
echo "Hoy es viernes.";
break;
default:
echo "Es fin de semana.";
}
Salida:
Hoy es miércoles.
Explicación:
- Se evalúa la variable
$dia. - Cuando encuentra
"miércoles", ejecuta ese bloque. breakdetiene la ejecución delswitchdespués de esa coincidencia.- Sin
break, elswitchseguiría ejecutando todos loscasesiguientes hasta encontrar unbreako llegar al final.
¿Qué pasa si NO usas break?
$opcion = 1;
switch ($opcion) {
case 1:
echo "Opción 1 seleccionada. ";
case 2:
echo "Opción 2 seleccionada. ";
case 3:
echo "Opción 3 seleccionada.";
break;
default:
echo "Opción no válida.";
}
Salida:
Opción 1 seleccionada. Opción 2 seleccionada. Opción 3 seleccionada.
Explicación:
Como no hay break en los case 1 ni case 2, PHP continúa ejecutando todos los bloques siguientes, incluso si ya ha encontrado una coincidencia. Esto puede causar errores lógicos si no se desea ese comportamiento.
¿Qué es continue?
El continue se utiliza dentro de estructuras de bucle (for, while, foreach) para saltar a la siguiente iteración del bucle, sin ejecutar el resto del código en la iteración actual.
Importante: continue no se usa dentro de switch directamente, porque switch no es un bucle. Sin embargo, puede aparecer dentro de un switch que a su vez esté dentro de un bucle, y ahí sí tiene un efecto.
Ejemplo
$numeros = [0, 1, 2, 3, 4];
foreach ($numeros as $numero) {
switch ($numero) {
case 0:
echo "Cero no es válido. Saltando...\n";
continue 2; // Saltamos a la siguiente iteración del bucle 'foreach'
case 1:
case 2:
echo "Número bajo: $numero\n";
break;
case 3:
case 4:
echo "Número alto: $numero\n";
break;
}
}
Salida:
Cero no es válido. Saltando...
Número bajo: 1
Número bajo: 2
Número alto: 3
Número alto: 4
Explicación:
- El valor
0activa elcontinue 2. ¿Por qué «2»? Porque está dentro de dos estructuras de control (switchyforeach), y queremos quecontinueafecte al bucle externo, no solo alswitch. - El resto de valores son evaluados normalmente por el
switch.
¿Qué significa continue N?
continue puede recibir un número entero (continue 2, continue 3, etc.), que indica cuántos niveles de estructuras de control anidadas deben ser saltados. Por defecto es continue 1.
Resumen
| Instrucción | ¿Dónde se usa? | ¿Qué hace? | Ejemplo clave |
|---|---|---|---|
break | switch, bucles | Sale inmediatamente del bloque actual | Evita la ejecución de los siguientes case |
continue | Bucles | Salta a la siguiente iteración del bucle | Dentro de switch anidado en un bucle, usar continue N |
Recapitulemos.
En este capítulo hemos aprendido a tomar decisiones y controlar el flujo de ejecución de tus programas PHP mediante estructuras de control:
- Condicionales (
if,else,elseif): permiten ejecutar bloques de código dependiendo de si una condición se cumple o no. switch: útil cuando tienes múltiples condiciones que evaluar sobre el mismo valor. Su uso adecuado conbreakevita ejecuciones no deseadas.- Bucles (
while,do...while,for,foreach): permiten repetir instrucciones de forma controlada hasta que una condición se cumpla o deje de cumplirse. break: detiene la ejecución de una estructura comoswitcho bucle.continue: salta la iteración actual de un bucle y pasa a la siguiente.- Vimos cómo
breakycontinuese pueden aplicar correctamente dentro deswitch, sobre todo si están dentro de bucles, con especial atención a la sintaxiscontinue 2.
Ejercicio 1: Clasificación de edad con if
Enunciado:
Escribe un programa que reciba la edad de una persona y clasifique si es niño, adolescente, adulto o adulto mayor.
ifEnunciado:
Escribe un programa que reciba la edad de una persona y clasifique si es niño, adolescente, adulto o adulto mayor.
Código:
$edad = 70;
if ($edad < 12) {
echo "Es un niño.";
} elseif ($edad < 18) {
echo "Es un adolescente.";
} elseif ($edad < 65) {
echo "Es un adulto.";
} else {
echo "Es un adulto mayor.";
}
Explicación:
- Se evalúa la edad usando condiciones anidadas (
elseif). - Cada condición define un rango específico de edad y ejecuta el mensaje correspondiente.
Ejercicio 2: Menú de opciones con switch
Enunciado:
Crea un menú de opciones con un número del 1 al 4 y utiliza switch para mostrar una opción distinta para cada número. Usa break para evitar ejecuciones en cascada.
Opciones del menú:
1. Ver Perfil
2. Configuración
3. Ayuda
4. Cerrar Sesión
switchEnunciado:
Crea un menú de opciones con un número del 1 al 4 y utiliza
switch para mostrar una opción distinta para cada número. Usa break para evitar ejecuciones en cascada.Opciones del menú:
1. Ver Perfil
2. Configuración
3. Ayuda
4. Cerrar Sesión
Código:
$opcion = 3;
switch ($opcion) {
case 1:
echo "Has elegido la opción 1: Ver perfil.";
break;
case 2:
echo "Has elegido la opción 2: Configuración.";
break;
case 3:
echo "Has elegido la opción 3: Ayuda.";
break;
case 4:
echo "Has elegido la opción 4: Cerrar sesión.";
break;
default:
echo "Opción no válida.";
}
Explicación:
- Cada
casemaneja una opción distinta del menú. - Se usa
breaken cada bloque para evitar que se ejecuten múltiples casos después de una coincidencia.
Ejercicio 3: Saltar números pares en un bucle foreach con continue y switch
Enunciado:
Dado un array del 1 al 5, imprime solo los números impares utilizando foreach, switch y continue.
foreach con continue y switchEnunciado:
Dado un array del 1 al 5, imprime solo los números impares utilizando
foreach, switch y continue.Código:
$numeros = [1, 2, 3, 4, 5];
foreach ($numeros as $numero) {
switch ($numero % 2) {
case 0:
// Número par
continue 2; // Salta a la siguiente iteración del foreach
case 1:
// Número impar
echo "Número impar: $numero\n";
break;
}
}
Explicación:
- Se analiza si el número es par o impar con
$numero % 2. - Si es par (
case 0), se usacontinue 2para saltar la iteración completa delforeach. - Si es impar (
case 1), se imprime el número.
Bibliografía de programación en PHP.
- Aprende PHP desde Cero: Todo lo que necesitas para programar en PHP. Autor: Gerardo G. Urtiaga (Editorial: Editorior Independiente)
- PHP y MySQL: Domine el desarrollo de un sitio web dinámico e interactivo. Autor: Olivier Heurtel (Editorial: Ediciones ENI)
- PHP 8: Programación de aplicaciones web en el servidor: Guía paso a paso con ejemplos y proyectos prácticos. Autor: Jose Vicente Cerratlá.
