Instrucțiunea continue în PHP
Pe lângă instrucțiunea break, care termină
execuția unei bucle, există și instrucțiunea
continue, care începe o nouă iterație
a buclei. Această instrucțiune poate fi uneori
utilă pentru a simplifica codul, deși aproape
întotdeauna problema poate fi rezolvată și fără ea. Să
vedem un exemplu practic.
Să presupunem că avem un array cu numere. Să
îl parcurgem cu o buclă și numerele divizibile
cu 2, le ridicăm la pătrat și le afișăm
pe ecran, iar numerele divizibile cu 3,
le ridicăm la cub și le afișăm pe ecran.
Iată soluția problemei descrise:
<?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;
}
}
?>
După cum vedeți, linia echo $res
se repetă de două ori. Să o scoatem
în afara if, astfel:
<?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; // am scos afișarea în afara condiției
}
?>
Totuși, acum scriptul nostru funcționează puțin
diferit: se va dovedi că și pentru elementele obișnuite,
neprocesate prin if-ul nostru, va fi
efectuată afișarea variabilei $res
pe ecran, ceea ce conform condițiilor problemei noastre
nu este necesar.
Să corectăm problema, adăugând la if-ul nostru
încă o condiție else, care se va activa
pentru elementele nedivizibile cu 2 și
3, și vom apela acolo instrucțiunea continue,
care ne va trimite imediat
la o nouă iterație a buclei:
<?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; // vom trece la o nouă iterație a buclei
}
echo $res; // se va executa, dacă este divizibil cu 2 sau 3
}
?>
Scrieți o buclă care afișează numai
numerele pare de la 1 la 100,
săr peste cele impare folosind continue.