Kategoriler
PHP

PHP’de Döngüler (Loops)

Döngüler; en basit ifade ile kendisine verilen koşul tamamlanıncaya kadar belli bir kod bloğunu çalıştıran yapılardır. PHP’de kullanabileceğiniz 4 farklı döngü türü vardır. Bunlar while, do/while, for ve foreach döngüleridir. Hepsinin temelde yaptığı şey aynı olsa da kullanım amaçları ve yerleri farklıdır.

While Döngüsü

PHP içerisindeki en basit döngü türüdür. Temel yapısı aşağıdaki gibidir.

while(koşul){
    //Döngüye sokulacak kod bloğu
}

while ifadesinden sonra parantezler içinde koşul ve sonrasında da süslü parantezler arasında döngüye sokulacak kod bloğu yer alır.

$i = 1;
while($i > 9){
    echo $i."\n";
    $i++;
}

Yukarıdaki kod bloğunu inceleyecek olursak; $i‘nin değeri 1 olarak tanımlanmış ve sonrasında $i‘nin değeri 9‘dan büyük olduğu sürece bir kod bloğu döngüye sokulmuş. Döngü içerisinde $i‘nin değeri ekrana yazdırılmış ve alt satıra geçilip $i‘nin değeri 1 arttırılmış. Bu örnek $i‘nin değeri 10 oluncaya kadar ekrana döngüyü devam ettirir.

Bir while döngüsü koşul bölümü doğru yani (true) olduğu sürece devam eder.
Örneğin;

$i = 0;
while(true){
    echo $i."\n";
    $i++;
}

Yukarıdaki kod bir sonsuz döngüdür ve siz programı durdurmadığınız sürece sonsuza kadar devam eder.

endwhile ile While Döngüsü

Bir while döngüsünün kod bloğunu belirtmek için süslü parantezler yerine endwhile ifadesi kullanılabilir.
Örneğin;

$i = 1;

while($i >= 6):
    echo $i."\n";
    $i++;
endwhile;

Do/While Döngüsü

Döngü kod bloğunun, koşul bölümüne bakılmadan önce bir kez çalışması gereken durumlarda kullanılan bir döngü türüdür.

Yazımı aşağıdaki gibidir.

do{
    //kod bloğu
}while(koşul);

do ifadesinden sonra süslü parantezler ile döngüye sokulacak kodlar ve ardından while ifadesinden sonra parantez içinde döngünün hangi koşulda devam edeceği tanımlanır.

Diğer döngülerden farklı olarak koşula bakılmadan önce bir kez kod bloğundaki kodlar çalışır ve sonrasında koşul gerçekleştiği sürece döngü devam eder.

$i = 0;
do{
    echo $i."\n";
}while($i > 0)

Yukarıdaki kodu çalıştıracak olursak; $i‘nin değeri 0 olarak atanacak ve sonrasında do ile bir döngü bloğu başlatılacaktır. Ekrana 0 basacak ve sonra döngünün koşulunu kontrol edecektir. $i‘nin değeri 0‘dan büyük olmadığı için döngü sonlandırılacaktır.


For Döngüsü

For döngüsünün yapısı biraz karmaşıktır. For döngüsünün söz dizimi şu şekildedir;

for(ifade1; ifade 2; ifade 3;){
    //döngüye girecek kodlar
}

for ifadesinin ardından parantez içerisinde noktalı virgül “;” ile ayrılmış 3 ifade yer alır. Bu ifadeleri birazdan daha detaylı açıklayacağım. Sonrasında tıpkı diğer döngülerde olduğu gibi süslü parantezler içerisinde döngüye girecek kod bloğu yazılır.

ifade1; Bir tanımlama yapıldığı bölümdür.
ifade2; Döngünün devam etme koşulunun yazıldığı bölümdür.
ifade3; Her döngü sonunda yapılması istenilen şeydir.

Yaygın bir kullanım şekli şöyledir;

for($i = 1; $i <= 5; $i++){
    echo $i.' döngü çalıştı.';
}

Yukarıdaki kodu PHP’nin derleyicisi gibi inceleyecek olursak;

for ile bir döngü kuruldu,
$i değişkenine 1 değeri atandı,
döngü içine girildi,
ekrana çıktı üretildi,
$i değişkeninin değeri 1 arttırıldı (ifade3),
döngüye girilsin mi diye koşul yani ifade2 kontrol et,
$i şuan 2 yani 5‘den küçük, döngüye yine gir



$i‘nin değeri 6 olduğunda koşul yani ifade2 bölümü artık uygun olmadığında döngüye girilmez.

sonuçta yukarıdaki döngü aşağıdaki gibi çıktı üretir.

1 döngü çalıştı.
2 döngü çalıştı.
3 döngü çalıştı.
4 döngü çalıştı.
5 döngü çalıştı.

endfor ile For Döngüsü

For döngüsünün kod bloğunu belirlemek için süslü parantezler yerine endfor ifadesi de kullanılabilir.

for($i = 1; $i <= 5; $i++):
    echo $i.' döngü çalıştı.';
endfor;

Foreach Döngüsü

Dizi (Array) ve nesne (object) türündeki veriler için kullanılabilir; özel bir döngüdür.
Söz dizimi şu şekildedir;

foreach(ifade1 as ifade2){
    //kod bloğu
}

Yapı üzerinden temel çalışma prensibi ifade1 dizisi ya da objesi içindeki her elemanı sırayla ifade2 içine atar.

$dizi = array("Ahmet", "Selim", "Hakan");

foreach($dizi as $isim){
    echo $isim . "\n";
}

yukarıdaki örnek şu çıktıyı üretir;

Ahmet
Selim
Hakan

Görebileceğiniz gibi $dizi değişkenindeki dizinin elemanlarını tek tek $isim değişkenine tanımlayarak foreach döngüsü içerisinde ekrana bastırmış oldum.

endforeach ile Foreach Döngüsü

While ve For döngülerinde olduğu gibi Foreach döngüsünde de döngü kod bloğunu süslü parantez yerine endforeach ifadesi ile sonlandırabilirsiniz.

$dizi = array("Ahmet", "Selim", "Hakan");

foreach($dizi as $isim):
    echo $isim . "\n";
endforeach;

İlişkisel dizilerde Foreach Döngüsü

Dizileri anlattığım konuda dizilerin ilişkisel olarak yani anahtar=değer olarak verileri tutabildiğinden bahsetmiştim. Bir ilişkisel dizinin elemanlarını foreach döngüsüne sokacak olursanız döngünün yapısı birazcık değişiyor.
Yapısı şu şekildedir;

foreach(ifade1 as ifade2 => ifade3){
    //döngü kod bloğu
}

Buradaki ifade1 bir yine bir dizi ya da nesnedir. ifade2 elamanların anahtarının, ifade3 ise elemanın değerinin atanacağı değişkendir.

Örnek;

$dizi = array("key" => "Value", "anahtar" => "Değer", "isim" => "Ahmet");

foreach($dizi as $anahtar => $deger){
    echo $anahtar . ' : ' . $deger . "\n";
}

yukarıdaki örnek şu çıktıyı üretir;

key : Value
anahtar : Değer
isim : Ahmet

continue İfadesi

Döngü kod bloğu içerisinde continue ifadesi kendisinden sonra gelen kodlar çalıştırılmadan döngü başına dönülmesini sağlar.

Örneğin

$i = 0;
while($i < 5){
    $i++;
    if($i == 3){
        continue;
    }
    echo $i . ". döngü çalıştı.\n";
}

Yukarıdaki döngüden $i‘nin değeri 3 olduğunda continue ifadesi ile döngünün başına dönüldüğünde 3. döngü çalıştı ibaresi ekrana yazılmayacaktır. Çıktısı şu şekildedir;

1. döngü çalıştı.
2. döngü çalıştı.
4. döngü çalıştı.
5. döngü çalıştı.

Dikkat edin; $i‘nin değerini continue; ifadesinden sonra arttırsaydık $i 3 olduğunda döngünün başına dönüleceği için hiçbir zaman $i‘nin değeri arttırılmayacak haliyle sonsuz döngü oluşacaktı.


break İfadesi

Bir döngü içerisinden döngüyü sonlandırmak için break ifadesi kullanılır.

$i = 1;
while(true){
    echo $i . ". döngü çalıştı.\n";
    if($i == 3){
        break;
    }
    $i++;
}

Yukarıda normal şartlarda bir sonsuz döngü örneği görüyorsunuz. Ancak $i‘nin değeri 3 olduğunda break ifadesi çalışacağı için döngü sonlandırılacaktır. Şu çıktıyı üretir;

1. döngü çalıştı.
2. döngü çalıştı.
3. döngü çalıştı.

PHP’de döngüler ve döngülerin kullanımları bu şekildedir. Elimden geldiğince detaylandırmaya çalıştım yine de anlamadığınız bir yer varsa çekinmeden sorabilirsiniz.

Yazar Muhammet ŞAFAK

1992 İstanbul doğumluyum. 2008 yılından beri profesyonel olarak PHP geliştiriyorum. Her ne kadar ağırlıklı olarak PHP üzerinde çalışsam da C, C++, Python, Java programlama dillerini de kullanıyorum.

Bir Cevap Yazın