Php dilinde döngüler
3090 0

Bir programlama dili gerçekten bir programlama dili olabilmesi için aranacak şartlardan, en önemlilerinden biri mutlaka döngülerdir. Yazdığınız program içerisinde tekrar edecek işlemler varsa bu durumda döngüler hemen yardımınıza yetişir. Örneğin bir matematik formülü de çıartılabilir. Duruma göre bir çok yerde kullanılabilir.

Günlük hayattan bir örnek vererek döngü kavaramını açıklamaya çalışalım. Evinizin önünde kum var ve size bu kumu başka bir yere taşımanız söylendi. Kumu tek seferde kaldırıp götürme şansınız yok! Yapacağınız şey bir kova veya el arabası bulup kumu taşımak. Şimdi döngüye girdiniz demektir. Döngünün her turunda elinizde dolu bir kovayı götürüp boşaltıyorsunuz. Döngü bittiğinde kum taşınmış olacak. Peki kaç turda bu döngü tamamlanacak? Buna kova veya el arabasının büyüklüğü karar verecek yani "değişken" bir durum.

Şimdi de bu örneği kodlara dökelim;

For Döngüsü

For döngüsü benim tanıştığım tüm programlama dillerinde vardır ve kullanımı aşağı yukarı hepsinde aynıdır. Genel yazım şekli şöyledir;

for(/*baslangıç değeri*/;/*Karşılaştırma*/;/*Artış Miktarı*/){
    //Yapılacak İşlemler
}

Ve şimdi de yukarıdaki örneğimize uygun kodları yazmaya çalışalım.

<?php
    $kum=100;
    $kova=2;
    $elArabasi=4;
    
    for($tasinacakYer=0;$tasinacakYer<=$kum;$tasinacakYer+=$kova){
        echo "Bir tur daha attım <br/>";
    }
    
    echo "Taşınacak yere gelen kum miktarı: ".$tasinacakYer;
?>

Umarım çok karışık hale gelmemiştir. For döngüsünün yazımına bakarak örneğimizi karşılaştırın. Başlangıçta değerlerimizi ayarladık yani değişkenlerimize ilk değerlerini verdik. Evimizin önündeki kum 100 birim olsun dedik, eğer kova ile taşırsak 2'şer birim, el arabasıyla taşırsak 4'er birim taşıyacağız. Siz örnekte "$kova" yerine "$elArabasi" kullanırsanız döngü sayısının azaldığını göreceksiniz. Döngüyü oluştururken başlangıç değeri kısmına "$tasinacakYer=0" ifadesini yazdık, bunun anlamı kumu götüreceğimiz yer başlangıçta boş yada temiz. Karşılaştırma kısmına şunu yazdık, eğer kumu götürdüğümüz yerde başlangıçtaki kum miktarı kadar kum oluras biz kumun tümünü taşıdık demektir ve döngü bitsin. Artış miktarı kısmında da her turda bir kova götürdüğümüz için taşınacak yerdeki kum miktarını 1 kova kadar arttırdık, eğer isterseniz buraya kova yerine el arabasını yerleştirin. Her turda tarayıcımıza "Bir tur daha attım yazacaktır" ve en sonda "Taşınacak yere gelen kum miktarı: 100" diyecektir.

For dögüsü ile alakalı bazı örnekler;

Tarayıcıya 1'den 10'a kadar olan sayıları alt alta yazan kod;

<?php
    for($i=1;$i<=10;$i++){
        echo "$i <br/>";
    }
?>

Tarayıcıya 1 ile 10 arasındaki çift sayıları alt alta yazdıran kod;

<?php
    for($i=2;$i<=10;$i+=2){
        echo "$i <br/>";
    }
?>

While Döngüsü

Dönü mantığı tüm döngülerde aynıdır. Kullanımlarında küçük farklılıklar vardır. Ben de kısaca bunlardan bahsedeyim. Önce bir yazım şekline bakalım.

while(/*Şart İfadesi*/){
    //Yaptırılacak İşlemler
}

Parantez içeriindeki şart ifadesi doğru olduğu yada sağlandığı sürece "{ }" süslü parantezler içerisine yazılan kodlar tekrar edilecektir. Döngülerde en çok dikkat edilmesi gereken konulardan biri de budur. Süslü parantezlerin unutulması kodlarda mantık hatalarına sebep olmaktadır. Buna çok dikkat edilmeli. Yukarıda belirtilen örneklerden birini de "While" döngüsü ile yapalım.

Tarayıcıya 1'den 10'a kadar olan sayıları alt alta yazan kod;

<?php
$i=1;
while($i<=10){
    echo "$i <br/>";
    $i++;
}
?>

do-while döngüsü

Döngünün yazım şekli;

<?php
    do{
        //Yaptırılacak İşlemler
    }while(/*Şart İfadesi*/);
?>

Tarayıcıya 1'den 10'a kadar olan sayıları alt alta yazan kod;

<?php
    $i=1;
    do{
        echo "$i <br/>";
        $i++;
    }while($i<=10);
?>

Aynı örnek ile 3 farklı döngüden bahsettik. do-while ile while döngüsü arasında çok ince bir fark vardır. While döngüsünde önce şart ifaedsine bakılır sağlanırsa döngüye girer ve tur atmaya başlar. Fakat do-while döngüsünde başlangıçta şart koşulmadığı için döngü her şartta 1 tur atar.

Arada farkı anlamak için küçük bir örnek yapalım.

While ile;

<?php
$i=5;
while($i>10){
    echo "Döngü içerisine girildi.";
}
?>

Bu kod çalıştırıldığında tarayıcıda hiç birşey görünmez.

<?php
$i=5;
do{
    echo "Döngü içerisine girildi.";
}while($i>10);
?>

Bu kodun çıktısı olarak tarayıcıda "Döngü içerisine girildi." ifadesini görürsünüz. Yani ne olursa olsun döngü 1 defa çalışır.

Foreach Döngüsü

Bu döngü sayesinde dizi elemanları üzerinde işlemler yapılabilir. Yazım şekli ve örnek ile devam edelim.

<?php
foreach($dizi as $indis => $deger){
    //Yapılacak işlemler
}
?>

"$dizi" anlayacağınız üzere tanımlı bir dizidir. Dizinin elemanlarını her turda değişkenler içerisine aktarır. Dizinin indislerini "$indis" değişkeninde, sakladığı değerler de "$deger" değişkeninde tutulur. Örneğin;

<?php
 $ogrenciler=array(156=>"Ömer",158=>"Ahmet",159=>"Mehmet");
 
 foreach($ogrenciler as $indisBilgisi => $siradakiDeger){
    echo $indisBilgisi." : ".$siradakiDeger;
    echo "<br/>";
 }
 
 /*
156 : Ömer
158 : Ahmet
159 : Mehmet
 */
?>

Ya da dizi fonksiyonlarını anlatırken gördüğümüz count() fonksiyonunun yaptığı işi foreach ile yapmaya çalışalım. Bildiğiniz gibi bize eleman sayısını veriyordu.

<?php
 $ogrenciler=array(156=>"Ömer",158=>"Ahmet",159=>"Mehmet");
 
 $sayac=0;
 foreach($ogrenciler as $deger){
    $sayac++;
 }
 
 echo "Dizinin eleman sayısı: $sayac";
 
 //Dizinin eleman sayısı: 3
 ?>

 

^
X