Maagizo ya continue katika PHP
Kando na maagizo ya break, ambayo yanamaliza
kazi ya kitanzi, pia kuna maagizo ya
continue, ambayo yanaanza iteresheni mpya
ya kitanzi. Maagizo haya wakati mwingine yanaweza kuwa
muhimu kurahisisha msimbo, ingawa karibu
kila wakati shida inaweza kutatuliwa nayo. Hebu
tuangalie kwa mfano wa vitendo.
Wacha tuwe na safu ya nambari. Hebu
tuipitie kwa kitanzi na nambari ambazo zinagawanyika
kwa 2, tuzipe mraba na kuzitoa
kwenye skrini, na nambari ambazo zinagawanyika kwa 3,
tuzipe ujazo na kuzitoa kwenye skrini.
Hapa kuna suluhisho la shida iliyoelezewa:
<?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;
}
}
?>
Kama unavyoona, mstari echo $res
unarudiwa mara mbili. Hebu tuutoa
nje ya if, kama hivi:
<?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; // imeletwa nje ya masharti
}
?>
Sasa skripti yetu, hata hivyo, inafanya kazi kidogo
si sawa: itatokea kwamba hata kwa vipengele vya kawaida,
visivyoshughulikiwa kupitia if yetu,
utekelezaji wa utoaji wa tofauti $res
kwenye skrini, ambayo kwa masharti ya shida yetu
hatuitaki.
Hebu tusahihishe tatizo, tukiongeza kwenye if yetu
sharti jingine else, ambalo litafanya kazi
kwa vipengele visivyogawanyika kwa 2 na
3, na tuite humo maagizo continue,
ambayo mara moja itatupitisha
kwenye iteresheni mpya ya kitanzi:
<?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; // tutaenda kwenye iteresheni mpya ya kitanzi
}
echo $res; // itatekelezwa, ikiwa inagawanyika kwa 2 au 3
}
?>
Andika kitanzi, ambacho kinatoa tu
nambari shufwa kutoka 1 hadi 100,
ukiruka zisizo shufwa kwa kutumia continue.