Upustvo continue u PHP-u
Pored uputstva break, koje prekida
rad petlje, postoji i uputstvo
continue, koje pokreće novu iteraciju
petlje. Ovo uputstvo ponekad može biti
korisno za pojednostavljenje koda, mada se
zadatak gotovo uvek može rešiti i bez njega. Hajde da
pogledamo na praktičnom primeru.
Neka nam je dat niz sa brojevima. Hajde da
ga prođemo petljom i brojeve koji se dele
sa 2 podignemo na kvadrat i prikažemo
na ekran, a brojeve koji se dele sa 3,
podignemo na kub i prikažemo na ekran.
Evo rešenja opisanog zadatka:
<?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;
}
}
?>
Kao što vidite, linija echo $res
ponavlja se dva puta. Hajde da je izbacimo
izvan if, ovako:
<?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; // izbacili smo ispisvanje iz uslova
}
?>
Sada naš skript, međutim, radi malo
drugačije: ispostaviće se da će i za obične elemente,
koji nisu obrađeni kroz naš if, biti
izvršen ispis promenljive $res
na ekran, što prema uslovu našeg zadatka nama
nije potrebno.
Popravićemo problem dodavanjem našem if
još jednog uslova else, koji će se aktivirati
za elemente koji se ne dele sa 2 i
3, i pozvaćemo tu uputstvo continue,
koje će nas odmah prebaciti
na novu iteraciju petlje:
<?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; // prelazimo na novu iteraciju petlje
}
echo $res; // izvršiće se, ako se deli sa 2 ili 3
}
?>
Napišite petlju koja ispisuje samo
parne brojeve od 1 do 100,
preskačući neparne pomoću continue.