W3docs

Técnicas de bucles en PHP: Guía completa

Aprende los bucles de PHP: for, while, do-while y foreach con ejemplos ejecutables, además de break, continue, bucles anidados y cómo elegir el correcto.

Los bucles te permiten ejecutar el mismo bloque de código una y otra vez sin tener que copiarlo y pegarlo. En lugar de escribir diez sentencias echo, escribes una y le indicas a PHP que la repita diez veces. Prácticamente cualquier programa real itera sobre algo: filas de una base de datos, elementos de un carrito de compras, líneas de un archivo o números en un rango.

PHP ofrece cuatro estructuras de bucle:

  • for — cuando sabes cuántas veces repetir o necesitas un contador.
  • while — repite mientras una condición sea verdadera (puede que no sepas cuántas veces de antemano).
  • do...while — igual que while, pero el cuerpo siempre se ejecuta al menos una vez.
  • foreach — el bucle indicado para recorrer cada elemento de un array.

Esta página cubre la sintaxis de cada uno, cómo controlar los bucles con break y continue, los bucles anidados y cómo elegir el adecuado.

Bucles for

Un bucle for repite un bloque un número conocido de veces. Su encabezado tiene tres partes separadas por punto y coma:

for (initializer; condition; update) {
  // body
}
  1. Inicializador se ejecuta una vez, antes de que comience el bucle — normalmente para configurar un contador.
  2. Condición se comprueba antes de cada iteración. El bucle se ejecuta mientras sea true y se detiene en el momento en que se vuelve false.
  3. Actualización se ejecuta después de cada iteración — normalmente para incrementar el contador.
php— editable, runs on the server

Aquí $i empieza en 0, el cuerpo se ejecuta mientras $i < 10, y $i++ añade 1 tras cada pasada. El bucle imprime The number is 0 hasta The number is 9 — diez líneas. Ten en cuenta que se detiene en 9, no en 10, porque la condición $i < 10 ya es falsa cuando $i llega a 10. Los operadores relacionales usados aquí (<, ++) se explican en operadores PHP.

Bucles while

Un bucle while se repite mientras su condición sea verdadera. Úsalo cuando el número de iteraciones no esté fijado de antemano — por ejemplo, leer hasta llegar al final de un archivo.

php— editable, runs on the server

Esto imprime las mismas diez líneas que el ejemplo con for. La diferencia es puramente estilística: con while gestionas el contador tú mismo ($i = 0 antes del bucle, $i++ dentro de él). Olvidar el $i++ haría que la condición se mantuviera verdadera para siempre — un bucle infinito, el error más común en los bucles.

Bucles do-while

Un bucle do...while es como while, pero comprueba la condición después de ejecutar el cuerpo. Eso significa que el cuerpo siempre se ejecuta al menos una vez, incluso si la condición es falsa desde el principio.

php— editable, runs on the server

Esto también imprime del 0 al 9. El comportamiento de "al menos una vez" es importante cuando la condición depende de algo que produce el cuerpo del bucle — por ejemplo, pedir al usuario una entrada y repetir solo si la entrada era inválida. Observa el punto y coma después de while (...); es obligatorio aquí.

Bucles foreach

Un bucle foreach recorre cada elemento de un array, uno a la vez. Es la forma más limpia de iterar sobre una colección porque nunca tienes que gestionar un índice manualmente.

La forma más sencilla te da cada valor:

php— editable, runs on the server

En cada pasada, $value contiene el siguiente elemento, por lo que esto imprime Red, Green y luego Blue.

Para los arrays asociativos, usa la forma $key => $value para leer tanto la clave como el valor:

php— editable, runs on the server

Esto imprime Peter is 32, Quagmire is 30 y Joe is 34. foreach preserva el orden de inserción, por lo que los elementos aparecen en el orden en que los definiste.

Control de bucles: break y continue

A veces necesitas detener un bucle antes de tiempo o saltar una sola pasada. Para eso sirven break y continue, y funcionan en todos los tipos de bucle.

Sentencia break de PHP

La sentencia break detiene el bucle inmediatamente y salta al código que hay después de él.

php— editable, runs on the server

Cuando $i llega a 5, break termina el bucle, por lo que esto imprime solo Number: 0 hasta Number: 4.

Sentencia continue de PHP

La sentencia continue omite el resto de la iteración actual y salta directamente a la siguiente — el bucle en sí sigue ejecutándose.

php— editable, runs on the server

Aquí continue omite la iteración donde $i == 5, por lo que se imprime cada número excepto el 5: Number: 0 a Number: 4, y luego Number: 6 a Number: 9.

Bucles anidados

Puedes colocar un bucle dentro de otro. El bucle interior se ejecuta completamente en cada pasada del bucle exterior. Así es como se construyen cuadrículas, tablas y tablas de multiplicar.

<?php

for ($row = 1; $row <= 3; $row++) {
  for ($col = 1; $col <= 3; $col++) {
    echo $row * $col . "\t";
  }
  echo "\n";
}

?>

El bucle exterior se ejecuta tres veces (una por fila); para cada fila el bucle interior se ejecuta tres veces (una por columna), imprimiendo una cuadrícula de multiplicación de 3×3. Ten en cuenta que dentro de un bucle anidado, break y continue afectan solo al bucle en el que se encuentran. Para salir de más de un nivel a la vez, puedes pasar un número: break 2; sale de dos bucles.

¿Qué bucle debo usar?

SituaciónMejor opción
Conoces el número de iteraciones o necesitas un contadorfor
Repetir mientras se cumple una condición, número desconocidowhile
Como while, pero el cuerpo debe ejecutarse al menos una vezdo...while
Procesar cada elemento de un arrayforeach

Cuando tengas dudas con arrays, elige foreach — es el más legible y el más difícil de usar incorrectamente, ya que no hay ningún índice que gestionar ni riesgo de salirse de los límites.

Conclusión

Los cuatro bucles de PHP cubren todos los patrones de repetición que encontrarás: for para bucles contados, while y do...while para bucles basados en condiciones, y foreach para arrays. Combínalos con break y continue para controlar el flujo, y anídales para trabajar con cuadrículas y tablas. Una vez que los bucles te resulten naturales, combínalos con las sentencias condicionales, la sentencia switch y las funciones para estructurar programas completos.

Práctica

Práctica
¿Cuáles de los siguientes son tipos de bucle válidos en PHP?
¿Cuáles de los siguientes son tipos de bucle válidos en PHP?
Was this page helpful?