Instruction continue en PHP
Outre l'instruction break, qui termine
la boucle, il existe également l'instruction
continue, qui lance une nouvelle itération
de la boucle. Cette instruction peut parfois être
utile pour simplifier le code, bien que pratiquement
toujours la tâche puisse être résolue sans elle. Regardons
un exemple pratique.
Supposons que nous ayons un tableau de nombres. Passons-le
en boucle et mettons au carré les nombres divisibles
par 2 et affichons-les
à l'écran, et les nombres divisibles par 3,
mettons-les au cube et affichons-les à l'écran.
Voici la solution à la tâche décrite :
<?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;
}
}
?>
Comme vous le voyez, la ligne echo $res
se répète deux fois. Sortons-la
du if, comme ceci :
<?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; // a sorti l'affichage de la condition
}
?>
Maintenant, notre script, cependant, fonctionne un peu
différemment : il s'avère que pour les éléments ordinaires,
non traités par notre if,
l'affichage de la variable $res
à l'écran sera exécuté, ce qui, selon les conditions de notre tâche, n'est
pas nécessaire.
Corrigeons le problème en ajoutant à notre if
une condition else supplémentaire, qui se déclenchera
pour les éléments non divisibles par 2 et
3, et appelons-y l'instruction continue,
qui nous transportera immédiatement
vers une nouvelle itération de la boucle :
<?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; // passe à une nouvelle itération de la boucle
}
echo $res; // s'exécute si divisible par 2 ou 3
}
?>
Écrivez une boucle qui n'affiche que
les nombres pairs de 1 à 100,
en sautant les nombres impairs à l'aide de continue.