Bucle while en PHP: sintaxis y ejemplos
Aprende cómo funciona el bucle while en PHP con sintaxis y ejemplos sencillos.
Actualizado el
El bucle while en PHP repite un bloque de código mientras la condición sea verdadera. La condición se comprueba antes de entrar en el bloque, así que el bucle puede ejecutar cero iteraciones.
Sintaxis de while en PHP
while (condicion) {
// Código que se ejecuta mientras la condición sea verdadera
}La condición se evalúa antes de cada vuelta del bucle. Si la condición es falsa desde el principio, el código de dentro no se ejecuta.
Ejemplo de while en PHP
Este ejemplo imprime los números del 1 al 10:
<?php
$numero = 1;
while ($numero <= 10) {
echo $numero . PHP_EOL;
$numero++;
}Primero se asigna 1 a $numero. Mientras $numero sea menor o igual que 10, PHP ejecuta el echo y después aumenta el valor con $numero++. PHP_EOL añade un salto de línea tras cada número para que la salida sea legible.
Evitar bucles infinitos
Un bucle infinito ocurre cuando la condición nunca deja de cumplirse. Por ejemplo:
<?php
$numero = 1;
while ($numero <= 10) {
echo $numero;
}En este caso falta $numero++, así que $numero siempre vale 1 y el bucle no termina.
Para evitarlo, asegúrate de que el cuerpo del bucle modifica alguna de las variables que intervienen en la condición o de que existe una salida controlada, como un break ligado a una condición.
Ejemplo práctico con break y continue
continue salta a la siguiente iteración y break termina el bucle. Este ejemplo lee un archivo línea a línea, ignora las líneas vacías y se detiene al encontrar FIN:
<?php
$archivo = fopen(__DIR__ . '/datos.txt', 'r');
if ($archivo === false) {
throw new RuntimeException('No se pudo abrir el archivo.');
}
while (($linea = fgets($archivo)) !== false) {
$linea = trim($linea);
if ($linea === '') {
continue;
}
if ($linea === 'FIN') {
break;
}
echo $linea . PHP_EOL;
}
fclose($archivo);Cuando la línea está vacía, continue pasa a la siguiente iteración sin ejecutar el echo. Cuando la línea es FIN, break sale del bucle.
Cuidado con el uso de continue dentro de un switch anidado en un bucle: sin argumentos se comporta como un break del switch y además emite un aviso E_WARNING. Para pasar a la siguiente iteración del bucle exterior, usa continue 2.
while, do while o for: cuál elegir
while comprueba la condición antes de ejecutar el bloque. do while ejecuta el bloque al menos una vez y después comprueba la condición.
<?php
$numero = 11;
do {
echo $numero;
$numero++;
} while ($numero <= 10);Aunque $numero ya es mayor que 10, el código se ejecuta una vez porque la condición se evalúa al final. do while garantiza al menos una ejecución, mientras que while puede no ejecutar el bloque ninguna vez.
| Estructura | Cuándo evalúa | Iteraciones mínimas | Uso habitual |
|---|---|---:|---|---|
| while | Antes | 0 | No se conoce de antemano cuántas vueltas harán falta |
| do while | Después | 1 | El bloque debe ejecutarse al menos una vez |
| for | Antes | 0 | Contador o número de iteraciones conocido |
Si el número de repeticiones se conoce de antemano o necesitas un contador explícito, for suele ser la opción más compacta.