break
Aprende cómo usar la palabra clave "break" en PHP para salir de bucles y sentencias switch, con ejemplos prácticos y casos de uso comunes.
La palabra clave break en PHP
break es una sentencia de control de flujo que termina inmediatamente el bucle o switch envolvente más cercano. La ejecución salta a la primera línea después de esa estructura — las iteraciones restantes se omiten. Funciona dentro de for, foreach, while, do...while y switch.
Se usa break cuando ya encontraste lo que buscabas o cuando una condición hace que continuar no tenga sentido: un registro coincidente en una lista, un error irrecuperable o un caso de switch que ya fue procesado. Detener la ejecución antes de tiempo ahorra trabajo y mantiene la lógica clara.
Esta página cubre la sintaxis, cada tipo de bucle, el caso de switch, cómo salir de bucles anidados con break N, y en qué se diferencia break de continue.
Sintaxis
<?php
while (condition) {
// code that runs each iteration
if (break_condition) {
break; // exit the loop right now
}
}
// execution continues here after breakCuando break_condition es verdadera, el bucle termina y se ejecuta la línea después de la llave de cierre. La condición es opcional — un break; sin más siempre sale del bucle — pero en la práctica casi siempre se protege con un if, ya que de lo contrario el bucle solo se ejecutaría una vez.
Salir de un bucle
El uso más común es detener una búsqueda en cuanto se obtiene una respuesta. Una vez encontrado el valor, no hay razón para seguir recorriendo el resto del array.
<?php
$haystack = [10, 22, 35, 47, 58];
$target = 35;
$found = false;
foreach ($haystack as $index => $value) {
if ($value === $target) {
$found = true;
echo "Found $target at index $index\n";
break; // stop — no need to check the rest
}
}
if (!$found) {
echo "Not found\n";
}
// Output: Found 35 at index 2El mismo patrón funciona con los demás tipos de bucle. Aquí break sale de un bucle while (true) — un bucle intencionalmente infinito cuya única salida es el break:
Usar break en un switch
Dentro de una sentencia switch, break es lo que evita que la ejecución "caiga" al siguiente caso. Sin él, PHP sigue ejecutando el código de los casos que están debajo del que coincidió.
<?php
$role = "editor";
switch ($role) {
case "admin":
echo "Full access";
break;
case "editor":
echo "Can edit content";
break; // without this, "Read-only" would also run
default:
echo "Read-only";
}
// Output: Can edit contentSalir de bucles anidados con break N
Por defecto, break solo sale del bucle más interno. Para salir de varios niveles a la vez, se pasa un número: break 2; sale de dos estructuras envolventes, break 3; sale de tres, y así sucesivamente.
<?php
for ($i = 1; $i <= 3; $i++) {
foreach (['a', 'b', 'c'] as $letter) {
if ($letter === 'b') {
break 2; // exit BOTH the foreach and the for
}
echo "$i-$letter\n";
}
}
echo "Done\n";
// Output:
// 1-a
// DoneUn break; simple aquí solo terminaría el foreach interno, y el for externo comenzaría su siguiente iteración. break 2; termina ambos, por lo que la ejecución salta directamente a echo "Done";.
Nota: El número después de
breakdebe ser un literal —break $level;es un error fatal desde PHP 5.4. Si necesitas esa flexibilidad, reestructura los bucles o muévelos a una función y usareturn.
break vs. continue
Estos dos son fáciles de confundir:
breakdetiene el bucle por completo y continúa con el código que le sigue.continueomite solo el resto de la iteración actual y salta a la siguiente — el bucle sigue ejecutándose.
Consulta break y continue para ver una comparación lado a lado.
Errores comunes
- Olvidar
breaken unswitchprovoca una caída accidental, haciendo que se ejecuten múltiples casos. Esto puede ser intencional en ocasiones (agrupar casos), pero normalmente es un error. breaksolo afecta a bucles yswitch— no se puede usar para salir de un bloqueifo de una función. Usareturnpara salir de una función.- Contar niveles para
break Nes frágil; si más adelante envuelves el código en otro bucle, el número será incorrecto. Mantén el anidamiento poco profundo.
Temas relacionados
- continue — saltar a la siguiente iteración en lugar de detener el bucle
- Bucle for y bucle while
- Bucle foreach — iterar sobre arrays
- switch — donde
breaksepara los casos