PHP continue käsk
Lisaks tsükli tööd lõpetavale käsklusele break,
on olemas ka käsklus continue, mis käivitab
tsükli uue iteratsiooni. See käsklus võib mõnikord
olla kasulik koodi lihtsustamiseks, kuigi peaaegu
alati saab ülesannet lahendada ka ilma selleta. Vaatame
praktilist näidet.
Olgu meil antud massiiv numbritega. Võtame selle
tsükliga läbi ja numbrid, mis jaguvad 2-ga,
teeme ruutu ja väljastame ekraanile, ning numbrid,
mis jaguvad 3-ga, teeme kuupiks ja väljastame
ekraanile.
Siin on kirjeldatud ülesande lahendus:
<?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;
}
}
?>
Nagu näete, rida echo $res
kordub kaks korda. Toome selle välja
if tingimusest, niimoodi:
<?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; // viisime väljundi tingimusest välja
}
?>
Nüüd aga meie skript töötab veidi
teisiti: selgub, et ka tavaliste elementide
puhul, mida meie if ei töitlenud,
teostatakse muutuja $res
väljastamine ekraanile, mida meie ülesande
tingimuse kohaselt meil vaja pole.
Parandame probleemi, lisades meie if-ile
veel tingimuse else, mis käivitub
elementide puhul, mis ei jagu 2-ga ega
3-ga, ja kutsume seal välja käsu continue,
mis kohe viib meid
tsükli uuele iteratsioonile:
<?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; // läheme tsükli uuele iteratsioonile
}
echo $res; // teostatakse, kui jagub 2-ga või 3-ga
}
?>
Kirjutage tsükkel, mis väljastab ainult
paaris arvud vahemikus 1 kuni 100,
jättes paaritud arvud vahele kasutades continue käsku.