Curso de PHP
Estructuras repetitivas while y do while en PHP
Por Víctor Peña · Publicado el

Hola, ¿cómo están? Continuando con el curso de PHP, hoy veremos las estructuras repetitivas while y do while, más conocidas como bucles.
¡Empecemos!
Qué es un bucle
Un bucle repite un bloque de código mientras se cumpla una condición. Es lo que evita que tengas que escribir la misma instrucción cincuenta veces.
Piensa en mostrar los 100 productos de una tienda: no escribes 100 líneas, escribes una instrucción que se repite 100 veces cambiando el producto.
El bucle while
Repite mientras la condición sea verdadera. Comprueba antes de cada vuelta.
<?php
$contador = 1;
while ($contador <= 5) {
echo "Vuelta número $contador\n";
$contador++;
}
Salida:
Vuelta número 1
Vuelta número 2
Vuelta número 3
Vuelta número 4
Vuelta número 5
Fíjate en la estructura, porque todo bucle tiene estas tres partes:
- Una variable de control, aquí
$contador = 1. - Una condición que en algún momento debe dejar de cumplirse.
- Algo que modifique la variable dentro del bucle, aquí
$contador++.
Si falta la tercera, tienes un problema.
El bucle infinito
Este es el error clásico:
<?php
$contador = 1;
while ($contador <= 5) {
echo "Hola\n";
// falta $contador++;
}
$contador nunca cambia, así que la condición siempre es verdadera y el bucle no termina jamás. En el navegador verás la página cargando hasta que PHP agote su tiempo límite; en la terminal tendrás que cortarlo con Ctrl + C.
Antes de ejecutar un while, pregúntate siempre: ¿qué hace que esta condición deje de cumplirse? Si no tienes respuesta clara, el bucle es infinito.
El bucle do while
Funciona igual, pero comprueba la condición al final en lugar de al principio:
<?php
$contador = 1;
do {
echo "Vuelta número $contador\n";
$contador++;
} while ($contador <= 5);
Fíjate en el punto y coma después del while: en esta estructura es obligatorio.
La diferencia real entre los dos
Es sutil pero importante: do while ejecuta el bloque al menos una vez, aunque la condición sea falsa desde el principio.
<?php
$numero = 100;
while ($numero < 10) {
echo "Esto no se imprime nunca";
}
do {
echo "Esto sí se imprime una vez";
} while ($numero < 10);
En el primero, PHP comprueba 100 < 10, es falso y ni entra. En el segundo entra, ejecuta y recién después comprueba.
Cuándo usar cada uno:
whilecuando puede que no haya que ejecutar nada. Es el caso habitual: leer registros que pueden ser cero.do whilecuando la acción debe ocurrir al menos una vez. El ejemplo típico es pedir un dato al usuario: primero se lo pides, después compruebas si es válido.
En la práctica while se usa mucho más.
Break: salir del bucle
break interrumpe el bucle inmediatamente:
<?php
$numero = 1;
while ($numero <= 100) {
if ($numero === 7) {
echo "Encontrado el 7, salgo\n";
break;
}
$numero++;
}
Es útil cuando buscas algo y ya lo encontraste: no tiene sentido seguir recorriendo.
Continue: saltar a la siguiente vuelta
continue no sale del bucle, solo se salta el resto de esta vuelta:
<?php
$numero = 0;
while ($numero < 10) {
$numero++;
if ($numero % 2 !== 0) {
continue; // si es impar, salta
}
echo "$numero "; // solo imprime pares
}
Salida: 2 4 6 8 10
Un aviso importante: con continue es muy fácil crear un bucle infinito. Si el incremento estuviera después del continue, la variable no cambiaría nunca en las vueltas impares. Por eso en el ejemplo el $numero++ va al principio.
Un ejemplo práctico
Simulemos el control de intentos de acceso:
<?php
$claveCorrecta = "php2026";
$intentos = 0;
$maxIntentos = 3;
$acceso = false;
// Simulamos los intentos del usuario
$pruebas = ["1234", "php", "php2026"];
while ($intentos < $maxIntentos) {
$clave = $pruebas[$intentos];
$intentos++;
if ($clave === $claveCorrecta) {
$acceso = true;
break;
}
echo "Intento $intentos fallido\n";
}
if ($acceso) {
echo "Acceso concedido en el intento $intentos";
} else {
echo "Cuenta bloqueada tras $maxIntentos intentos";
}
Aquí conviven las tres piezas de la lección: la condición que limita las vueltas, el break que sale al acertar y una variable que recuerda el resultado.
Sintaxis alternativa con HTML
Igual que con los condicionales, existe una forma pensada para mezclar con HTML:
<?php $i = 1; ?>
<ul>
<?php while ($i <= 3): ?>
<li>Elemento <?php echo $i; ?></li>
<?php $i++; ?>
<?php endwhile; ?>
</ul>
Errores comunes
- Olvidar modificar la variable de control. Bucle infinito garantizado.
- Usar
<=cuando querías<, o al revés. Provoca una vuelta de más o de menos, el clásico error «por uno». - Poner el incremento después de un
continue. El bucle se queda atascado. - Modificar la variable dentro de un
ifque no siempre se cumple. La condición puede no llegar nunca a ser falsa.
Para cerrar
while y do while son los bucles más básicos y la diferencia entre ellos se resume en una frase: do while siempre da al menos una vuelta.
Lo importante es no perder de vista qué hace que el bucle termine. Si no lo tienes claro al escribirlo, revísalo antes de ejecutar.
En la siguiente lección veremos for y foreach, que son los que más vas a usar en el día a día.
Saludos y éxitos.
Norvic Software
Desarrollamos el software que tu empresa necesita
Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.
- Chatbots con Inteligencia Artificial
- Creación de agentes de IA
- Integración de IA en tus sistemas
- Desarrollo de software a medida
- Aplicaciones móviles iOS y Android
- Consultoría y asesoramiento técnico
Cotización sin costo · Respuesta directa por WhatsApp