W3docs

do

La palabra clave "do" en PHP inicia un bucle do...while que ejecuta un bloque de código al menos una vez. Aprende su sintaxis, usos y errores comunes.

La palabra clave do en PHP

La palabra clave do inicia un bucle do...while en PHP — una estructura de control que ejecuta un bloque de código repetidamente mientras una condición sea verdadera. Su característica definitoria es que la condición se comprueba al final del bucle, por lo que el cuerpo siempre se ejecuta al menos una vez, incluso cuando la condición es falsa desde el principio.

Esta página cubre la sintaxis de do...while, cómo difiere de un bucle while normal, las situaciones prácticas donde es más útil (validación de entrada, menús, lógica de reintento), los errores comunes que hay que evitar, y cómo controlar el bucle con break y continue.

Sintaxis

La palabra clave do se combina con la palabra clave while. El cuerpo va primero, luego la condición:

La sintaxis PHP de do

<?php

do {
  // code to be executed
} while (condition);

Dos detalles a recordar:

  • La condición se evalúa después de cada pasada, por lo que el cuerpo se ejecuta una vez antes de que se compruebe.
  • El cierre while (condition); debe terminar con punto y coma — a diferencia de un bucle while normal, donde el punto y coma crearía un error.

do...while vs while

La diferencia está en cuándo se comprueba la condición. Un bucle while normal comprueba la condición antes de la primera iteración, por lo que puede ejecutarse cero veces. Un bucle do...while comprueba después, por lo que se ejecuta al menos una vez.

<?php

$count = 10;

// while: condition false up front → body never runs
while ($count < 5) {
  echo "while: $count\n";
}

// do...while: body runs once before the check
do {
  echo "do: $count\n"; // prints "do: 10"
} while ($count < 5);

Salida:

do: 10

El bucle while no imprime nada; el bucle do...while imprime una línea. Usa do...while siempre que el cuerpo deba ejecutarse al menos una vez independientemente del estado inicial.

Ejemplos

Contar e iterar sobre un array — nota que PHP_EOL (o "\n") imprime una nueva línea, por lo que cada valor aparece en su propia línea:

Ejemplos de PHP do

<?php

// Example 1 — count from 1 to 5
$myNumber = 1;
do {
  echo $myNumber . PHP_EOL;
  $myNumber++;
} while ($myNumber <= 5);
// Prints 1, 2, 3, 4, 5 each on its own line

// Example 2 — walk through an array
$myArray = ["apple", "banana", "cherry", "date"];
$index = 0;
do {
  echo $myArray[$index] . PHP_EOL;
  $index++;
} while ($index < count($myArray));
// Prints apple, banana, cherry, date each on its own line

Cuándo usar do...while

La garantía de "se ejecuta al menos una vez" hace que do...while sea la opción natural para algunos patrones recurrentes.

Lógica de reintento y validación

Intenta una acción una vez, luego sigue reintentando mientras falle:

<?php

$attempts = 0;
do {
  $attempts++;
  // Simulate: the 3rd attempt finally succeeds
  $password = $attempts < 3 ? "wrong" : "secret";
} while ($password !== "secret" && $attempts < 5);

echo "Logged in after $attempts attempts" . PHP_EOL;
// Logged in after 3 attempts

Dado que el primer intento siempre debe ocurrir, do...while resulta más natural aquí que un bucle while con código de configuración duplicado.

Bucles de menú

Muestra un menú, lee la entrada y repite hasta que el usuario elija salir — el menú debe mostrarse al menos una vez:

<?php

$choice = '';
do {
  // show menu, read $choice from input...
  // for this example we just stop immediately
  $choice = 'q';
} while ($choice !== 'q');

echo "Goodbye\n";

Controlar el bucle: break y continue

Dentro del cuerpo de un do...while puedes usar break para salir del bucle anticipadamente y continue para saltar a la siguiente comprobación de la condición.

<?php

$n = 0;
do {
  $n++;
  if ($n === 3) {
    continue; // skip printing 3, jump to the while check
  }
  if ($n > 5) {
    break;    // exit the loop entirely
  }
  echo $n . PHP_EOL;
} while (true);
// Prints 1, 2, 4, 5

Ten en cuenta que continue salta a la comprobación de la condición, no de vuelta al inicio del cuerpo — el bucle sigue reevaluando while (true) y continúa.

Errores comunes

  • Olvidar el punto y coma al final después de while (condition) provoca un error de análisis.
  • Bucles infinitos: si la condición nunca se vuelve falsa (y no hay break), el bucle se ejecuta indefinidamente. Asegúrate de que algo dentro del cuerpo cambie los valores de los que depende la condición.
  • Error de índice al recorrer arrays: con do...while, el cuerpo se ejecuta antes de la comprobación de límites, por lo que un array vacío puede provocar un error de "índice indefinido". Protégete con if (!empty($arr)) o usa foreach para los arrays.

Bucles relacionados

PHP ofrece varias construcciones de bucle — elige la que mejor se adapte a tu intención:

  • while — comprueba la condición antes de cada pasada (puede ejecutarse cero veces).
  • for — un bucle basado en contador con init/condición/incremento integrados.
  • foreach — itera directamente sobre arrays y objetos.
  • Resumen de bucles PHP — una comparación lado a lado de los cuatro.

Conclusión

El bucle do...while es la herramienta adecuada cuando un bloque de código debe ejecutarse al menos una vez y luego repetirse mientras se cumpla una condición — la validación de entrada, la lógica de reintento y los menús interactivos son ejemplos clásicos. Recuerda el punto y coma al final, asegúrate de que la condición pueda eventualmente volverse falsa, y usa break/continue para afinar el flujo.

Práctica

Práctica
En PHP, ¿cuál es el propósito del bucle 'do-while'?
En PHP, ¿cuál es el propósito del bucle 'do-while'?
Was this page helpful?