A continue utasítás PHP-ben
A ciklus működését befejező break utasítás mellett létezik a
continue utasítás is, amely egy új ciklusiterációt indít el.
Ez az utasítás néha hasznos lehet a kód egyszerűsítésére, bár a feladat
szinte mindig megoldható anélkül is. Nézzünk egy gyakorlati példát.
Tegyük fel, hogy adott egy számokat tartalmazó tömb. Járjuk be ciklussal,
és a 2-vel osztható számokat négyzetre emeljük és írjuk ki a képernyőre,
majd a 3-mal osztható számokat köbre emeljük és írjuk ki a képernyőre.
Ime a leírt feladat megoldása:
<?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;
}
}
?>
Amint látható, a echo $res
sor kétszer ismétlődik. Vigyük ki
az if feltételblokkon kívülre,
így:
<?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; // kivittük a kiírást a feltételből
}
?>
Azonban most a szkriptünk kissé
másképp működik: kiderül, hogy a szokásos elemekre is,
amelyeket nem dolgoztunk fel az if feltételünkben,
végrehajtódik a $res változó
kiírása a képernyőre, ami a feladat feltétele szerint nem
szükséges számunkra.
Javítsuk a problémát úgy, hogy az if feltételünkhöz
hozzáadunk egy else ágat is, amely azokra az elemekre
fog vonatkozni, amelyek nem oszthatók 2-vel vagy
3-mal, és ott meghívjuk a continue utasítást,
amely azonnal a ciklus következő iterációjára ugrik:
<?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; // átugrunk egy új ciklusiterációra
}
echo $res; // akkor hajtódik végre, ha osztható 2-vel vagy 3-mal
}
?>
Írjon egy ciklust, amely csak 1-től 100-ig
a páros számokat jeleníti meg, a páratlanokat a continue
utasítással kihagyva.