Die continue-instruksie in PHP
Behalwe die break-instruksie, wat die
lus beëindig, is daar ook die continue-instruksie,
wat 'n nuwe iterasie van die lus begin.
Hierdie instruksie kan soms nuttig wees om
kode te vereenvoudig, hoewel die taak byna
altyd sonder dit opgelos kan word. Kom ons
kyk na 'n praktiese voorbeeld.
Gestel ons het 'n array met nommers. Kom ons
durkloop dit met 'n lus en sal die nommers wat deelbaar is
deur 2, kwadreer en druk dit uit
op die skerm, en die nommers wat deelbaar is deur 3,
sal ons tot die derde mag verhef en dit uitdruk.
Hier is die oplossing vir die beskryfde taak:
<?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;
}
}
?>
Soos jy kan sien, word die reël echo $res
twee keer herhaal. Kom ons haal dit uit
die if, soos volg:
<?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; // het die uitskrywing buite die voorwaarde geplaas
}
?>
Ons skrip werk eger nou effens anders:
dit beteken dat selfs vir gewone elemente,
wat nie deur ons if verwerk is nie, sal die
uitskrywing van die veranderlike $res
op die skerm uitgevoer word, wat volgens die voorwaarde van ons taak nie nodig is nie.
Laat ons die probleem regstel deur by ons if
'n bykomende else-voorwaarde by te voeg, wat sal aktiveer
vir elemente wat nie deelbaar is deur 2 en
3 nie, en roep die continue-instruksie daar,
wat ons onmiddellik sal oorsit
na die nuwe iterasie van die lus:
<?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; // sal na die nuwe lus-iterasie beweeg
}
echo $res; // sal uitgevoer word as dit deelbaar is deur 2 of 3
}
?>
Skryf 'n lus wat slegs
eve getalle van 1 tot 100 uitdruk,
en onewe getalle oorslaan met behulp van continue.