continue
(PHP 4, PHP 5, PHP 7, PHP 8)
continue
se utiliza dentro de las estructuras iterativas para saltar el resto de la iteración actual del bucle y continuar la ejecución en la evaluación de la condición, para luego comenzar la siguiente iteración.
Nota: En PHP, la sentencia switch se considera una estructura iterativa para los propósitos de
continue
.continue
se comporta igual quebreak
(cuando no se proporcionan argumentos). Si unswitch
está dentro de un bucle,continue 2
continurá con la siguiente iteración del bucle externo.
continue
acepta un argumento numérico opcional, que indica a cuántos niveles de bucles encerrados se ha de saltar al final. El valor por omisión es 1
, por lo que salta al final del bucle actual.
<?php
while (list($clave, $valor) = each($arr)) {
if (!($clave % 2)) { // saltar los miembros pares
continue;
}
hacer_algo($valor);
}
$i = 0;
while ($i++ < 5) {
echo "Exterior<br />\n";
while (1) {
echo "Medio<br />\n";
while (1) {
echo "Interior<br />\n";
continue 3;
}
echo "Esto nunca se imprimirá.<br />\n";
}
echo "Ni esto tampoco.<br />\n";
}
?>
Omitir el punto y coma después del continue
puede llevar a confusión. He aquí un ejemplo de lo que no se debe hacer.
<?php
for ($i = 0; $i < 5; ++$i) {
if ($i == 2)
continue
print "$i\n";
}
?>
Se esperaría que el resultado fuera:
0 1 3 4
pero, en versiones de PHP anteriores a la 5.4.0, la salida de este script será:
2
debido a que continue print "$i\n";
se evalúa completo como una sola expresión, y así print se llama solamente cuando $i == 2
es verdadero. (El valor de retorno de print
es pasado a continue
como el argumento numérico.)
Nota:
A partir de PHP 5.4.0, el ejemplo anterior emitirá un error
E_COMPILE_ERROR
.
Versión | Descripción |
---|---|
5.4.0 | continue 0; ya no es válido. En versiones anteriores era interpretado de la misma manera que continue 1; . |
5.4.0 | Se eliminó la posibilidad de pasar variables (por ejemplo, $num = 2; continue $num; ) como el argumento numérico. |