PHP-dagi continue instruksiyasi
Siklni tugatadigan break instruksiyasidan
tashqari, shuningdek, siklining yangi iteratsiyasini
boshlaydigan continue instruksiyasi mavjud.
Ushbu instruksiya ba'zan kodni soddalashtirish
uchun foydali bo'lishi mumkin, ammo amalda
har doim vazifani undan foydalanmasdan ham
hal qilish mumkin. Keling, amaliy misolni
ko'rib chiqaylik.
Faraz qilaylik, bizda sonlar bilan massiv
berilgan. Keling, uni sikl bilan aylantiramiz
va 2 ga bo'linadigan sonlarni kvadratga
ko'tarib, ekranga chiqaramiz, 3 ga
bo'linadigan sonlarni esa kubga ko'tarib,
ekranga chiqaramiz.
Tasvirlangan vazifaning yechimi:
<?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;
}
}
?>
Ko'rib turganingizdek, echo $res
qatori ikki marta takrorlanadi. Keling,
uni if dan tashqariga olib chiqamiz,
mana shu tarzda:
<?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; // chiqarishni shartdan tashqariga olib chiqdik
}
?>
Biroq, endi bizning skriptimiz biroz boshqacha
ishlaydi: ma'lum bo'ladiki, bizning if
orqali qayta ishlanmagan oddiy elementlar
uchun ham $res o'zgaruvchisining qiymati
ekranga chiqariladi, bu esa bizning vazifa
shartimizga ko'ra kerak emas.
Muammoni tuzatamiz, if ga 2
va 3 ga bo'linmaydigan elementlar
uchun ishlaydigan yana bir else
shartini qo'shamiz va u yerda continue
instruksiyasini chaqiramiz, bu esa bizni
darhol siklining yangi iteratsiyasiga o'tkazadi:
<?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; // siklining yangi iteratsiyasiga o'tamiz
}
echo $res; // agar 2 yoki 3 ga bo'linsa, bajariladi
}
?>
continue yordamida toq sonlarni
o'tkazib yuborib, faqat 1 dan
100 gacha bo'lgan juft sonlarni
chiqaradigan sikl yozing.