Navodila continue v PHP
Poleg navodila break, ki konča
delo zanke, obstaja tudi navodilo
continue, ki začne novo iteracijo
zanke. To navodilo je lahko včasih
uporabno za poenostavitev kode, čeprav je
skoraj vedno mogoče rešiti problem tudi brez njega. Poglejmo
si praktični primer.
Recimo, da imamo dano polje s števili. Poglejmo si
ga z zanko in števila, ki so deljiva
z 2, povišajmo v kvadrat in izpišimo
na zaslon, števila, ki so deljiva z 3,
pa povišajmo v kocko in izpišimo na zaslon.
Tu je rešitev opisanega problema:
<?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;
}
}
?>
Kot lahko vidite, se vrstica echo $res
ponovi dvakrat. Izločimo jo
iz if, takole:
<?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; // izpis smo premaknili izven pogoja
}
?>
Vendar pa naš skript zdaj deluje nekoliko
drugače: izkazalo se bo, da se bo za običajne elemente,
ki niso bili obdelani z našim if,
izvedel tudi izpis spremenljivke $res
na zaslon, kar po pogojih našega problema ne
potrebujemo.
Popravimo težavo tako, da našemu if
dodamo še pogoj else, ki se bo sprožil
za elemente, ki niso deljivi z 2 in
3, in kličemo tam navodilo continue,
ki nas bo takoj preusmerilo
na novo iteracijo zanke:
<?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; // preidemo na novo iteracijo zanke
}
echo $res; // izvede se, če je deljivo z 2 ali 3
}
?>
Napišite zanko, ki izpiše samo
soda števila od 1 do 100,
preskočite liha z uporabo continue.