Bucles en PHP con la sentencia Break
En PHP, break detiene un bucle antes de tiempo y continue omite la iteración actual. Aprende a usarlos, incluyendo break N y continue N para bucles anidados.
Cuando escribes un bucle en PHP, a menudo necesitas un control más preciso que "ejecutar cada iteración". Dos sentencias te dan ese control: break sale del bucle antes de tiempo, y continue omite el resto de la iteración actual. Esta página cubre ambas, incluyendo cómo aplicarlas a bucles anidados con break N y continue N.
Entendiendo la sentencia Break
La sentencia break termina inmediatamente el bucle actual (o switch) y transfiere el control a la primera sentencia después del bucle. Úsala cuando hayas encontrado lo que buscabas, o cuando continuar sería inútil o inseguro — por ejemplo, al encontrar un registro coincidente o al detectar una condición de error.
break funciona dentro de bucles for, foreach, while y do...while, así como dentro de una sentencia switch.
Nota: Usar
breakfuera de un bucle o una sentenciaswitchprovoca un error fatal en PHP.
Usando la sentencia Break en un bucle For
En un bucle for, la sentencia break se puede usar para detener el bucle cuando se cumple una condición específica. Por ejemplo, el siguiente código usa un bucle for para buscar un número en un array:
Ejemplo PHP de break en un bucle for
En este código, el bucle se detendrá en cuanto el valor de $numbers[$i] sea igual a 3. La salida de este código será "Found 3 at index 2".
Usando la sentencia Break en un bucle Foreach
En un bucle foreach, la sentencia break funciona de manera similar al bucle for. El siguiente código usa un bucle foreach para buscar un valor específico en un array asociativo:
Ejemplo PHP de break en un bucle foreach
En este código, el bucle se detendrá en cuanto la clave $color sea igual a "green". La salida de este código será "green has hex code #00FF00".
Salir de bucles anidados
La sentencia break también puede usarse para salir de bucles anidados. Cuando se usa una sentencia break dentro de un bucle anidado, solo se termina el bucle más interno.
Por ejemplo, el siguiente código usa dos bucles anidados para buscar un valor específico en un array bidimensional:
Ejemplo PHP de break en bucles anidados
En este código, la sentencia break 2 se usa para salir de dos niveles de anidamiento. La salida de este código será Found 5 at [1][1].
El número que sigue a break indica cuántos bucles envolventes se deben abandonar, no un índice de bucle. break 1 es equivalente a un break simple, y el número no puede ser mayor que la profundidad de anidamiento real.
Entendiendo la sentencia Continue
Mientras que break sale del bucle por completo, continue solo omite el resto de la iteración actual y salta directamente a la siguiente. El bucle en sí continúa ejecutándose. Esta es la opción natural cuando quieres ignorar algunos elementos pero seguir procesando el resto.
El siguiente bucle imprime todos los números del 1 al 10 excepto los pares:
Ejemplo PHP de continue en un bucle for
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 == 0) {
continue; // skip even numbers
}
echo "$i ";
}
?>La salida es 1 3 5 7 9 — cuando $i es par, continue omite el echo y el bucle pasa al siguiente valor.
Continue en un bucle Foreach
continue es especialmente útil en un bucle foreach cuando quieres filtrar elementos sobre la marcha. Aquí omitimos cualquier producto que esté agotado:
Ejemplo PHP de continue en un bucle foreach
<?php
$products = array(
array("name" => "Pen", "stock" => 12),
array("name" => "Notebook", "stock" => 0),
array("name" => "Eraser", "stock" => 5),
);
foreach ($products as $product) {
if ($product["stock"] === 0) {
continue; // don't list sold-out items
}
echo $product["name"] . " (" . $product["stock"] . " in stock)\n";
}
?>Esto imprime Pen y Eraser, omitiendo el Notebook agotado.
Saltar múltiples niveles con continue N
Al igual que break N, continue N salta a la siguiente iteración de un bucle exterior. continue 2, por ejemplo, reinicia el bucle un nivel más arriba:
Ejemplo PHP de continue 2 en bucles anidados
<?php
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
if ($j == 2) {
continue 2; // jump to the next $i
}
echo "i=$i j=$j\n";
}
}
?>El bucle interno solo imprime j=1, porque al llegar a j == 2 se reinicia el bucle exterior. La salida es i=1 j=1, i=2 j=1, i=3 j=1.
Break vs. Continue
| Sentencia | Efecto |
|---|---|
break | Detiene el bucle por completo; la ejecución continúa después del bucle. |
continue | Omite el resto de la iteración actual; el bucle continúa. |
break N | Sale de N bucles anidados a la vez. |
continue N | Salta a la siguiente iteración del bucle N niveles más arriba. |
Errores comunes
continueen un bucledo...whilesigue evaluando la condición. No omite la comprobación de la condición, por lo que el bucle puede terminar después de uncontinue.continuese comporta de manera diferente dentro deswitch. Dentro de unswitchque está dentro de un bucle,continueactúa comobreakpara elswitchy emite una advertencia en versiones modernas de PHP. Usabreakpara salir delswitchy reservacontinuepara el bucle circundante.- Los errores de uno en uno con
continueen un bucleforson poco frecuentes porque el incremento de la sentenciaforse ejecuta normalmente — pero en un buclewhiledebes actualizar el contador antes decontinue, o puedes crear un bucle infinito.
Conclusión
Las sentencias break y continue te dan un control preciso sobre la ejecución de los bucles: break sale de un bucle antes de tiempo, mientras que continue omite una iteración y sigue adelante. Las formas break N y continue N extienden ese control a través de bucles anidados. A continuación, revisa cómo funcionan los distintos tipos de bucle — for, foreach, while y do...while.