Instrução continue em PHP
Além da instrução break, que termina
a execução de um loop, também existe a instrução
continue, que inicia uma nova iteração
do loop. Essa instrução às vezes pode ser
útil para simplificar o código, embora quase
sempre seja possível resolver o problema sem ela. Vamos
ver um exemplo prático.
Suponha que temos um array com números. Vamos
iterá-lo com um loop e elevar ao quadrado os números divisíveis
por 2, exibindo-os
na tela, e os números divisíveis por 3,
elevaremos ao cubo e exibiremos na tela.
Aqui está a solução para a tarefa descrita:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
echo $res;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
echo $res;
}
}
?>
Como você pode ver, a linha echo $res
se repete duas vezes. Vamos colocá-la
fora do if, assim:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
}
echo $res; // colocou a exibição fora da condição
}
?>
No entanto, agora nosso script funciona um pouco
diferente: acontece que para elementos comuns,
não processados pelo nosso if, será
executada a exibição da variável $res
na tela, o que, pelas condições da nossa tarefa,
não é necessário.
Vamos corrigir o problema, adicionando ao nosso if
mais uma condição else, que será acionada
para elementos não divisíveis por 2 e
3, e chamaremos a instrução continue nela,
que imediatamente nos levará
para uma nova iteração do loop:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
foreach ($arr as $elem) {
if ($elem % 2 === 0) {
$res = $elem * $elem;
} elseif ($elem % 3 === 0) {
$res = $elem * $elem * $elem;
} else {
continue; // vamos para uma nova iteração do loop
}
echo $res; // será executado se for divisível por 2 ou 3
}
?>
Escreva um loop que exiba apenas
números pares de 1 a 100,
ignorando os ímpares usando continue.