Continue instrukcija PHP
Be instrukcijos break, užbaigiančios
ciklo veikimą, taip pat egzistuoja instrukcija
continue, paleidžianti naują ciklo
iteraciją. Ši instrukcija kartais gali būti
naudinga norint supaprastinti kodą, nors
beveik visada problemą galima išspręsti ir
be jos. Pažiūrėkime į praktinį pavyzdį.
Tarkime, kad turime skaičių masyvą. Pereikime
jį ciklu ir skaičius, kurie dalijasi iš
2, pakelkime kvadratu ir išveskime
į ekraną, o skaičius, kurie dalijasi iš 3,
pakelkime kubu ir išveskime į ekraną.
Štai aprašytos problemos sprendimas:
<?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;
}
}
?>
Kaip matote, eilutė echo $res
kartojasi du kartus. Iškelkime ją
už if, štai taip:
<?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; // išvedimą iškeitėme už sąlygos
}
?>
Tačiau dabar mūsų scenarijus veikia kiek
kitaip: pasirodo, kad ir įprastiems elementams,
neapdorotiems per mūsų if, bus
atliekamas kintamojo $res išvedimas
į ekraną, ko pagal mūsų uždavinio sąlygą mums
nereikia.
Išspręskime problemą, prie mūsų if
pridėdami dar sąlygą else, kuri suveiks
elementams, nesidalinantiems iš 2 ir
3, ir iškviškime ten instrukciją continue,
kuri iš karto permestų mus
į naują ciklo iteraciją:
<?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; // pereisime į naują ciklo iteraciją
}
echo $res; // bus vykdoma, jei dalijasi iš 2 arba 3
}
?>
Parašykite ciklą, kuris išveda tik
lyginius skaičius nuo 1 iki 100,
praleisdamas nelyginius naudodami continue.