for Döngüsü

İstenilen komutları istenilen sayıda çalıştırmak için kullanılır. Döngüyü kontrol etmek için döngü sayacı olarak adlandırılan bir değişken kullanılır. Bu genelde $i değişkenidir. Biz de burada döngü değişkeni olarak $i değişkenini kullanacağız.

Döngü değişkenleri döngünün sınırlarını belirlemek için kullanılır. Ayrıca döngü altında çalışan komutların bir kısmı olarak da kullanılabilir. Örneğin bir dizinin indisi yada ekrana yazılan mesajın bir bölümü olabilirler. Eğer döngünün sınırlar iyi belirlenmezse döngü; sonsuz döngüye, diğer bir ifadeyle kısır döngüye girebilir. Bu durumda tarayıcımız yanıt vermeyebilir.

for döngüsünün kullanımı şu şekildedir.

<?php
for(/*başlangıç*/ ; /*koşul*/ ; /*artış miktarı*/){
   // döngü altında çalışacak komutlar
}
?>

Başlangıç: Döngünün kaçtan balayacağını belirtmek için kullanılır.

Koşul: Döngü için belirtilen koşuldur. Bu koşul sağlandığı sürece döngü döner.

Artış miktarı: Döngü değişkeninin kaçar kaçar artacağını belirtmek için kullanılır.

 

Örneğin 1'den 10'a kadar dönen ve ekrana Merhaba Dünya yazan bir döngü kuralım.

<html>
<body>
<?php
for($i=1;$i<=10;$i++){
   echo "Merhaba Dünya";
   echo "<br>";
}
?>
</body>
</html>

İlk örnek olduğundan örneği açıklayılım: Döngü değişkeni olarak $i kullanılmıştır. $i=1 tanımlamasıyla döngünün 1'den başlayacağı belirtilmiştir. $i<=10 koşulu ile döngünün, $i'nin 10'dan küçük yada 10'a eşit olduğu sürece döneceği belirtilmiştir. $i++ ifadesi ile de her döngüden sonra $i'nin 1 arttırılacağı belirtilmiştir.

Örneğimizin ekran çıktısı ise aşağıdaki gibidir.

Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya
Merhaba Dünya

 

Örnek: Ekranda alt alta 1'den 10' kadar olan sayıları yazdıralım.

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

Not: Burada for altında çalışan tek komut olduğundan { } parantezlerini kullanmadık.

Aynı örneği iki farklı şekilde yazalım. Buradaki kullanım şekillerine dikkat ediniz.

<?php
for ($i=1;;$i++){
   if ($i>10)
      break; // döngüyü kırmak için kullanılır.
   echo "$i<br>"; // Dikkat: Bu komut if yapısına bağlı değildir. {} parantezleri yok.
}
?>
<?php
$i=1;
for (;;){
   if ($i>10)
      break;
   echo "$i<br>";
   $i++;
}
?>

 

Örnek: Şimdiki örneğimizde 1 ile 100 arasındaki sayılardan 5'e bölünebilenlerin toplamını bulalım.

<?php
$toplam=0;
for ($i=1;$i<=100;$i++)
   if ($i%5==0) // $i'nin 5'e bölümünden kalan 0 ise
      $toplam=$toplam+$i;
echo "Toplam=$toplam";
?>

Burada şunu hatırlatmakta fayda var. for altında iki komut görünüyor ve { } parantezlerini kullamamız gerekiyor gibi gelebilir. Ancak if yapısı $toplam=$toplam+$i; komutunu, for döngüsü de if yapısını tutmaktadır. Dolayısıyla { } parantezlerini kullanmak gerekmez. Basit bir ifadeyle { } parantezleri kullanılmadığında for, ilk noktalı virgüle (;) kadar olan komutları çalıştırır.

Aynı örneği farklı bir şekilde tekrar yapalım.

<?php
$toplam=0;
for ($i=1;$i<=100;$i++)
   $toplam+=($i%5==0)?$i:0;
echo "Toplam=$toplam";
?>

Burada ($i%5==0)?$i:0 komutundan koşula göre ya $i yada 0 döner.

Aslında hiç if yapısı kullanmadan sadece döngü değişkenini beşer beşer arttırarak da aynı işlemi yapabilirsiniz. Ancak o zaman $i sıfırdan başlatılmalıdır.

<?php
$toplam=0;
for ($i=0;$i<=100;$i+=5)
   $toplam+=$i;
echo "Toplam=$toplam";
?>

 

Yukarıdaki örnekte de görüldüğü üzere döngü değişkenini istediğiniz kadar arttırabilirsiniz.

Örnek: 7'den başlayarak üçer üçer 50'ye kadar yazdıralım.

<?php
for ($i=7;$i<=50;$i+=3){
   echo "$i<br>";
}
?>

 

Örnek: Bu örnekte ise döngümüz toplam 1000'den büyük olduğunda dursun. Döngü değişkeni de yedişer yedişer artsın.

<?php
$toplam=0;
for ($i=1;;$i+=7){
   $toplam+=$i;
   if ($toplam>1000)
      break;
}
echo "Toplam=$toplam";
?>

Gördüğünüz gibi döngüyü sonlandırmak için; koşul, döngü değişkenine bağlı değildir.

 

Azalan döngüler de yapabilirsiniz. Bunun için koşulu dikkatli yazmak gerekir. Aksi halde sonzuz döngüye girilebilir. Ayrıca döngü değişkeni azaltılmalıdır.

Örnek: Tanımlı olan metni küçükten büyüğe doğru başlık şeklinde yazdıralım.

<?php
for ($i=6;$i>=1;$i--)
   echo "<h$i>Her şakanın yarısı gerçektir.</h$i>";
?>

 

Örnek: 2010'dan 1920'ye kadar olan yılları açılır listeye ekleyelim.

<?php
echo "<select name='yillar'>";
for ($i=2010;$i>=1920;$i--)
   echo "<option value='$i'>$i</option>";
echo "</select>";
?>