BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > PHP > PHP döngüler

PHP döngüler

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ığımızda, web tarayıcımızda aşağıdaki ifadeler karşımı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.

PHP'de döngüleri içiçe kullanabiliriz. Bu yöntemle içte yer alan döngüyü dışta yer alan döngüde tanımlanan ifadeye göre istediğimiz sayıda tekrar çalıştırabiliriz.


<html>
<body>

<?php
    $deg01 = 0;
   
    while ($deg01++ < 3) {
        $deg02 = 1;  

        while ($deg02 <= 10) {
            echo $deg02++ . " ";
        }
        echo "<br/>";
    }   
?>

</body>
</html>

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

1 2 3 4 5 6 7 8 9 10
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, içiçe 2 while döngüsü ile 1'den 10'a kadar olan sayılar 3 kez ekrana yazılır. İlk while döngüsünün ifadesi içinde yer alan değişken değerinin aynı satırda artırıldığına dikkat ediniz.

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ığımızda, web tarayıcımızda aşağıdaki ifadeler karşımı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ığımızda, web tarayıcımızda aşağıdaki ifadeler karşımı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ığımızda, web tarayıcımızda aşağıdaki ifadeler karşımı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.

foreach döngüsünde kullanılan $deger değişkeninin önüne & işareti getirerek referans yoluyla bağlantı sağlar ve dizi eleman değerlerini değiştirebilirsiniz.


<html>
<body>

<?php
    $deg01 = array (1, 2, 3, 4, 5);
	
    foreach ($deg01 as &$deger) {
        $deger += 5;
    }
	
    unset($deger); 
	
    foreach ($deg01 as $deger) {
        echo $deger . " ";
    }	
?>

</body>
</html>

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

6 7 8 9 10

Yukarıdaki PHP dosyasında, ilk foreach döngüsünde diziyi referans yoluyla bağlantı sağlandığından dizi elemanlarına yapılan değişiklik kalıcı olur. $deger değişkeni içeriğinin unset() fonksiyonu ile sıfırlandığına dikkat ediniz.

break deyimi

break deyimi while, do while, for, foreach ve switch yapılarının çalışmasını sonlandırmak için kullanılır. break deyimi ile birlikte isteğe bağlı olarak, break deyiminin içinde bulunduğu yapıda dahil olmak üzere, üste doğru içiçe yer alan kaç adet yapının çalışmasının durdurulacağını belirten bir sayısal ifade kullanılabilir.


<html>
<body>

<?php
    $deg01 = 1;
    while ($deg01 <= 10) {
        echo $deg01++ . " ";    
        if ($deg01==4) break;
    }

    echo "<br/>";
	
    $deg01 = 1;
    do {
        echo $deg01++ . " ";
        if ($deg01==6) break;	  
    } while ($deg01 <= 10);
   
    echo "<br/>";
   
    for ($deg01=1; $deg01<=10; $deg01++) {
          echo $deg01 . " ";
          if ($deg01==8) break;
    }	
?>

</body>
</html>

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

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

Yukarıdaki PHP dosyasında, döngülerin normal çalışmasına göre 1'den 10'a kadar olan sayıların 3 kez ekrana yazılması gerekirken, döngüler içinde yer alan break deyimi, kendisinden önce tanımlanan ifade doğru sonuç verdiğinde, döngülerin çalışmasını beklenenden önce sonlandırmıştır.

continue deyimi

continue deyimi while, do while, for ve foreach döngülerinde bulunduğu işlem satırından sonra yer alan döngü işlem satırlarının çalıştırılmadan bir sonraki döngü tekrarına geçilmesini sağlamak için kullanılır. continue deyimi ile birlikte isteğe bağlı olarak, continue deyiminin içinde bulunduğu yapıda dahil olmak üzere, üste doğru içiçe yer alan kaç adet döngüde atlama işleminin uygulanacağını belirten bir sayısal ifade kullanılabilir.


<html>
<body>

<?php
    $deg01 = 0;
    while (++$deg01 <= 10) {
        if ($deg01==4) continue;
        echo $deg01 . " ";
    }

    echo "<br/>";
	
    $deg01 = 1;
    do {
        if ($deg01==6) continue;	 
        echo $deg01 . " ";      
    } while (++$deg01 <= 10);
   
    echo "<br/>";
   
    for ($deg01=1; $deg01<=10; $deg01++) {
          if ($deg01==8) continue;
          echo $deg01 . " ";          
    }	
?>

</body>
</html>


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

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

Yukarıdaki PHP dosyasında, döngülerin normal çalışmasına göre 1'den 10'a kadar olan sayıların 3 kez ekrana yazılması gerekirken, döngüler içinde yer alan continue deyimi, döngülerde sıra ile 4, 6 ve 8 sayılarının ekrana yazılmasını engeller.