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.
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
$edad
es 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. break
detiene la ejecución delswitch
después de esa coincidencia.- Sin
break
, elswitch
seguiría ejecutando todos loscase
siguientes hasta encontrar unbreak
o 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
0
activa elcontinue 2
. ¿Por qué «2»? Porque está dentro de dos estructuras de control (switch
yforeach
), y queremos quecontinue
afecte 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 conbreak
evita 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 comoswitch
o bucle.continue
: salta la iteración actual de un bucle y pasa a la siguiente.- Vimos cómo
break
ycontinue
se 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.
if
Enunciado:
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
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
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
case
maneja una opción distinta del menú. - Se usa
break
en 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 switch
Enunciado:
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 2
para 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á.