continue
(PHP 4, PHP 5, PHP 7, PHP 8)
continue
é utilizado em estruturas de laço para
pular o resto da iteração atual, e continuar a execução
na validação da condição e, então, iniciar a próxima iteração.
Nota: No PHP a instrução switch é considerada uma estrutura de laço para os propósitos do
continue
. Ocontinue
se comporta como obreak
(quando nenhum argumento é passado), mas irá gerar um aviso, pois este é susceptível de ser um erro. Se umswitch
está dentro de um laço,continue 2
irá continuar a próxima interação do laço externo.
O continue
aceita um argumento numérico opcional
que diz quantos níveis de laços aninhados deve pular.
O valor padrão é 1
, saltando
para o final do laço atual.
<?php
foreach ($arr as $key => $value) {
if (!($key % 2)) { // pula membros pares
continue;
}
do_something_odd($value);
}
$i = 0;
while ($i++ < 5) {
echo "Outer<br />\n";
while (1) {
echo "Middle<br />\n";
while (1) {
echo "Inner<br />\n";
continue 3;
}
echo "This never gets output.<br />\n";
}
echo "Neither does this.<br />\n";
}
?>
Omitir o ponto e vírgula depois do continue
pode causar
confusão. Abaixo está um exemplo do que não se deve fazer.
<?php
for ($i = 0; $i < 5; ++$i) {
if ($i == 2)
continue
print "$i\n";
}
?>
O resultado esperado poderia ser:
0 1 3 4
mas em versões do PHP inferiores a 5.4.0, o script imprimirá:
2
porque todo o código continue print "$i\n";
é avaliado
como uma só expressão, então o print é chamado somente
quando $i == 2
for verdadeiro. (O retorno do
print
é passado para o continue
como o
argumento numérico.)
Nota:
A partir do PHP 5.4.0, o exemplo acima irá causar um erro do tipo
E_COMPILE_ERROR
.
Versão | Descrição |
---|---|
7.3.0 |
continue dentro de um switch que está tentando agir como um break para o
switch irá gerar um E_WARNING .
|
7.0.0 |
continue fora de um laço ou fora de uma estrutura de controle
switch agora é detectado em tempo de compilação, antes era em tempo de execução,
e dispara um erro do tipo E_COMPILE_ERROR .
|
5.4.0 |
continue 0; não é mais válido. Em versões anteriores era interpretado
como continue 1; .
|
5.4.0 |
Removida a possibilidade de passar variáveis como argumentos numéricos
(ex., $num = 2; continue $num; ).
|