PHP'de continue Deyimi
Döngünün çalışmasını sonlandıran break deyiminin yanı sıra,
döngünün yeni bir tekrarını başlatan continue deyimi de bulunur.
Bu deyim bazen kodu basitleştirmek için yararlı olabilse de,
pratikte hemen her zaman problem onu kullanmadan da çözülebilir.
Pratik bir örnekle inceleyelim.
Bize bir sayı dizisi verildiğini varsayalım.
Bu diziyi bir döngü ile ele alalım ve 2'ye bölünebilen sayıların
karesini alıp ekrana yazdıralım, 3'e bölünebilen sayıların ise
küpünü alıp ekrana yazdıralım.
Açıklanan problemi çözen kod aşağıdadır:
<?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üğünüz gibi, echo $res satırı
iki kez tekrar ediyor. Bu satırı if
bloğunun dışına, aşağıdaki gibi taşıyalım:
<?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; // çıktıyı koşulun dışına taşıdık
}
?>
Ancak şimdi betiğimiz biraz farklı çalışıyor:
Bizim if bloğumuz tarafından işlenmeyen
sıradan elemanlar için bile $res değişkeninin
ekrana yazdırılması işlemi gerçekleşecek, bu da
problem koşulumuza göre ihtiyacımız olmayan bir durum.
Problemi düzeltmek için, if bloğumuza
2 ve 3'e bölünmeyen elemanlar
için tetiklenecek bir else koşulu daha ekleyelim
ve burada, bizi hemen döngünün yeni bir tekrarına
atayacak olan continue deyimini çağıralım:
<?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öngünün yeni tekrarına geç
}
echo $res; // sadece 2'ye veya 3'e bölünebiliyorsa çalışır
}
?>
continue kullanarak tek sayıları atlayan ve
sadece 1'den 100'e kadar olan
çift sayıları yazdıran bir döngü yazın.