PHP Programlama

PHP Uygulamalar

Php ve MySQL

PHP Döngüler

► Detaylı anlatım

PHP'de döngüler içinde yer alan işlem satırlarının belirli bir koşula bağlı olarak istenen sayıda tekrar edilerek çalıştırılmasını sağlayan yapılardır.

while döngüsü

while döngüsü ile ilgili koşul ifadesi doğru (TRUE) sonuç verdiği sürece, döngü içinde yer alan işlem satırları çalışmaya devam eder. Eğer döngü ifadesi başlangıçta doğru sonuç vermezse döngü hiç çalışmaz. Döngü ifadesinin değeri her tekrarın başlangıcında kontrol edilir. İfade değeri, döngü içinde yer alan işlem satırları yoluyla yanlış olacak şekilde değiştirilse bile döngü içinde bulunduğu tekrarı bitirene kadar devam eder. while döngüsünün { } parentezleri ve : (Alternatif yazım) yöntemi ile kullanım şekli aşağıda gösterilmektedir:

while (ifade) {
    işlem satırı
    .
    .
    işlem satırı	  
}

while (ifade):
    işlem satırı
    .
    .
    işlem satırı	  
endwhile;	
<html>
<body>

<?php

    $deg01 = 1;
    while ($deg01 <= 10) {
        echo $deg01++ . " ";    
    }

    echo "<br/>";
   
    $deg01 = 1;   
    while ($deg01 <= 10):
        echo $deg01++ . " ";    
    endwhile;
   
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığınızda, web tarayıcınızda aşağıdaki ifadeler karşınıza çıkar:

1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

Yukarıdaki PHP dosyasında, while döngüsü iki farklı yazım yöntemiyle kullanılarak 1'den 10'a kadar olan sayılar 2 kez ekrana yazılır.

do while döngüsü

PHP'de do while döngüsü koşul ifadesinin doğruluğu, while döngüsünden farklı olarak, döngünün sonunda kontrol edilir. Bu nedenle, döngü içinde yer alan işlem satırları en az bir defa çalıştırılır. İlk tekrarın sonunda, ifade kontrolu yapılır ve doğru sonuç verdiği sürece döngü çalışmasına devam eder. do while döngüsünün yapısı aşağıda gösterilmektedir:

do {
    işlem satırı
    .
    .
    işlem satırı	  
} while (ifade)
<html>
<body>

<?php

    $deg01 = 1;
    do {
        echo $deg01++ . " ";  
    } while ($deg01 <= 10);
   
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığınızda, web tarayıcınızda aşağıdaki ifadeler karşınıza çıkar:

1 2 3 4 5 6 7 8 9 10

Yukarıdaki PHP dosyasında, do while döngüsü kullanılarak 1'den 10'a kadar olan sayılar ekrana yazılır.

for döngüsü

PHP'de for döngüsünün { } parentezleri ve : (Alternatif yazım) yöntemi ile kullanım şekli aşağıda gösterilmektedir:

for (ifade1; ifade2; ifade3) {
    işlem satırı
    .
    .
    işlem satırı	  
}

for (ifade1; ifade2; ifade3) :
    işlem satırı
    .
    .
    işlem satırı	  
endfor;

Yukarıdaki yapıda gösterilen ifade1 ifadesi bir defaya mahsus olmak üzere ve sadece döngünün başlangıcında çalıştırılır. Bu ifade ilk değer atama amacıyla kullanılır.

ifade2 ifadesi her döngü tekrarının başlangıcında değerlendirilir. Eğer doğru (TRUE) sonuç verirse döngü devam eder ve döngü içinde yer alan işlem satırları çalıştırılır. Eğer yanlış (FALSE) sonuç verirse döngünün çalışması sona erer. Bu ifade döngünün çalışması ile ilgili koşulun tanımlanması için kullanılır.

ifade3 ifadesi her döngü tekrarının sonunda değerlendirilir. Bu ifade döngü değişken değeri artırma işlemi için kullanılır.

for döngüsünde tanımlanan ifadelerin her biri boş olabilir veya virgül ile ayrılmış birden fazla ifadeden oluşabilir. ifade2 içindeki virgül ile ayrılmış tüm ifadeler değerlendirilir fakat sonuç en sondaki bölümden alınır. Eğer ifade2 boş olursa döngü sonsuz olarak çalışır.

<html>
<body>

<?php

    for ($deg01=1; $deg01<=10; $deg01++) {
          echo $deg01 . " ";
    }	
   
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığınızda, web tarayıcınızda aşağıdaki ifadeler karşınıza çıkar:

1 2 3 4 5 6 7 8 9 10

Yukarıdaki PHP dosyasında, for döngüsü kullanılarak 1'den 10'a kadar olan sayılar ekrana yazılır. $deg01 değişkenine ilk değer verme ve değer artırma işlemlerinin for döngüsü ifadeler satırında yapıldığına dikkat ediniz.

foreach döngüsü

foreach yapısı diziler üzerinde tekrarlayıcı işlemler yapmak için kullanılır. foreach sadece diziler ve nesneler ile kullanılır. Farklı bir veri türündeki veya ilk değer verilmemiş bir değişkenle kullanıldığında hata meydana gelir. foreach yapısının 2 farklı yazımı aşağıda gösterilmektedir:

foreach (dizi_ifadesi as $deger)
    işlem satırı
    .
    .
    işlem satırı	  
}

foreach (dizi_ifadesi as $deger_adi => $değer) {
    işlem satırı
    .
    .
    işlem satırı	  
}

İlk foreach yapısında sadece dizide yer alan değerlerle ilgili işlemler yapılır. Döngünün her tekrarında sırası gelen dizi elemanının değeri $deger değişkenine atanır ve dizinin dahili göstericisi bir artırılır.

İkinci foreach yapısında ise, hem değer adları hem de değerlerle ilgili işlemler yapılır. Döngünün her tekrarında sırası gelen dizi elemanının değer adı $deger_adi değişkenine, değeri ise $deger değişkenine atanır ve dizinin dahili göstericisi bir artırılır.

foreach döngüsü çalışmaya başladığında, dizinin dahili göstergesi otomatik olarak dizinin ilk elemanını gösterecek şekilde ayarlanır. Bu durumda, foreach döngüsünün başında reset() fonksiyonunu kullanmanıza gerek yoktur.

İşlem yapılan dizi ile referans yoluyla bağlantı yapılmadığı sürece, foreach döngüsü dizinin bir kopyası ile işlem yapar.

<html>
<body>

<?php

    $deg01 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
	
    foreach (array (1, 2, 3, 4, 5) as $deger) {
        echo $deger . " ";
    }

    echo "<br/>";
	
    foreach ($deg01 as $deger) {
        echo $deger . " ";
    }
	
    echo "<br/><br/>";

    foreach ($deg01 as $deger_adi => $deger) {
        echo "Değer adı: $deger_adi Değer: $deger <br/>";
    }
	
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığınızda, web tarayıcınızda aşağıdaki ifadeler karşınıza çıkar:

1 2 3 4 5
1 2 3 4 5

Değer adı: a Değer: 1
Değer adı: b Değer: 2
Değer adı: c Değer: 3
Değer adı: d Değer: 4
Değer adı: e Değer: 5 

Yukarıdaki PHP dosyasında, ilk 2 foreach döngüsü aynı işlemi yaparak dizinin değerlerini ekrana yazar. Aralarındaki, tek fark dizi_ifadesi olarak ilkinde dizinin kendisi ikincisinde ise dizinin atandığı bir değişkenin kullanılmasıdır. Üçüncü foreach döngüsünde ise dizide yer alan hem değer adları hem de değerler ekran yazılmaktadır.