Instrukcija continue PHP
Papildus instrukcijai break, kas pārtrauc
cikla darbību, pastāv arī instrukcija
continue, kas sāk jaunu cikla
iterāciju. Šī instrukcija dažreiz var būt
noderīga, lai vienkāršotu kodu, lai gan praktiski
vienmēr uzdevumu var atrisināt arī bez tās. Apskatīsim
praktisku piemēru.
Pieņemsim, ka mums ir dots masīvs ar skaitļiem. Apskatīsim
to ar ciklu un skaitļus, kas dalās
ar 2, kāpināsim kvadrātā un izvadīsim
uz ekrānu, bet skaitļus, kas dalās ar 3,
kāpināsim kubā un izvadīsim uz ekrānu.
Šeit ir aprakstītā uzdevuma risinājums:
<?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;
}
}
?>
Kā jūs redzat, rindiņa echo $res
atkārtojas divas reizes. Izņemsim to
ārpus if, šādi:
<?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; // izvade pārvietota ārpus nosacījuma
}
?>
Tomēr tagad mūsu skripts strādā nedaudz
savādāk: izrādīsies, ka arī parastajiem elementiem,
kas netika apstrādāti ar mūsu if, tiks
veikta mainīgā $res izvade
uz ekrānu, kas saskaņā ar mūsu uzdevuma nosacījumiem mums
nav nepieciešams.
Izlabosim problēmu, pievienojot mūsu if
vēl nosacījumu else, kas darbosies
elementiem, kas nedalās ar 2 un
3, un izsauksim tur instrukciju continue,
kura uzreiz pārsūtīs mūs
uz jaunu cikla iterāciju:
<?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; // pārejam uz jaunu cikla iterāciju
}
echo $res; // izpildīsies, ja dalās ar 2 vai 3
}
?>
Uzrakstiet ciklu, kurš izvada tikai
pāra skaitļus no 1 līdz 100,
izlaižot nepāra skaitļus, izmantojot continue.