PHP-də continue instruksiyası
Dövrü dayandıran break instruksiyasından əlavə,
dövrün yeni iterasiyasını başladan continue
instruksiyası da mövcuddur. Bu instruksiya bəzən kodu
sadələşdirmək üçün faydalı ola bilər, baxmayaraq ki,
demək olar ki, həmişə problemi onsuz da həll etmək olar.
Gəlin praktiki bir nümunəyə baxaq.
Tutaq ki, bizə ədədlər massivi verilib. Gəlin onu
dövrə ilə gəzək və 2-ə bölünən ədədləri kvadrata
yüksəldib ekrana çıxaraq, 3-ə bölünən ədədləri isə
kuba yüksəldib ekrana çıxaraq.
Təsvir olunan məsələnin həlli belədir:
<?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;
}
}
?>
Gördüyünüz kimi, echo $res sətri
iki dəfə təkrarlanır. Gəlin onu if-dən
xaricə çıxaraq, belə:
<?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; // çıxışı şərtdən kənara çıxardıq
}
?>
Lakin indi bizim skript bir az fərqli işləyir:
belə çıxır ki, bizim if ilə işlənməyən
adi elementlər üçün də $res dəyişəninin
ekrana çıxarılması yerinə yetiriləcək, bu isə
bizim məsələnin şərtinə görə lazım deyil.
Problemi aradan qaldırmaq üçün if-ə
2 və 3-ə bölünməyən elementlər
üçün işləyəcək else şərti əlavə edək və
orada dərhal bizi dövrün yeni iterasiyasına
atacaq continue instruksiyasını çağıraq:
<?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; // dövrün yeni iterasiyasına keçəcək
}
echo $res; // 2-yə və ya 3-ə bölünəndə icra olunacaq
}
?>
continue istifadə edərək tək ədədləri
atlayaraq, yalnız 1-dən 100-ə qədər
olan cüt ədədləri çıxaran bir dövr yazın.