PHP döngüleri ve kod örnekleri

PHP döngüleri ve kod örnekleri

Daha önce alelacele ve hatalı olarak yazdığım bu makalenin tekrar üzerinden geçerek güncelledim. Ayrıca ekstra örneklerle de konuyu biraz daha genişlettim.

PHP, C dilinde ki döngülere benzer tarzda döngülere sahiptir. Bu döngüler genellikle tüm programlama dillerinde aynı mantık ile çalışsa da kodlar arasında ufak tefek değişiklikler olduğu için farklı şekillerde yazılırlar. PHP içerisinde kullanılan döngüler FOR, FOREACH, WHILE, DO-WHILE dır.

FOR döngüsü

Bu döngü ile belirli bir sayı değeri verdiğiniz değişken, artan yada azalan, aldığı her değer için belirtilen işlemi tekrarlar. Bu durum belirtilen koşula ulaşana kadar devam eder.
Genelde bu döngüde for($i=0;$i<$toplamverisayisi;$i++){…işlemler….} şeklinde tanımlanır. $i=0 yerine istediğiniz sayıdan başlatabilirsiniz. Artan için < işareti, azalan için > işareti ile limit koşulunu belirleyebilirsiniz.
Eğer limit dahil ise, yani kapalı aralık ise <= veya >= işaretlerini kullanarak limiti de alınan değer aralığına dahil edebilirsiniz. Son parametrede bulunan $i++ yerine $i+=2 veya $i-=2 gibi artış miktarı belirleyebilirsiniz.

FOREACH döngüsü

Eğer dizinizdeki elemanları listelemek istiyorsanız, bu döngüyü kullanmanız size daha fazla kolaylık ve performans sağlar. Örneğin;

<?php
$diziadi = array('Ali'=>'5 yıldız', 'Hüseyin'=>'4 yıldız', 'Recep'=>'1 Yıldız'); 

foreach ($diziadi as $elemanadi => $elemandegeri) {
  echo $elemanadi.', sınavdan '.$elemandegeri.' aldı.<br/>';
}
?> 


şeklinde tanımlanabilir.
Çıktısı
Ali, sınavdan 5 Yıldız aldı.
Hüseyin, sınavdan 4 Yıldız aldı.
Recep, sınavdan 1 Yıldız aldı.
şeklinde olacaktır.

While ve Do-While


Bazen işlemlerin tekrar, tekrar yapılması gerekir. Eğer sayı ile ilgili ve bir limiti varsa for, bir dizi ise sonlu olduğu için foreach işimizi görüyor. Peki bu işlemin kaç defa olacağı belli değil ise ne yapacağız? işte bu durum için do while komutu devreye giriyor. Do içerisindeki işlemler en az bir defa koşula uyulmaksızın gerçekleşiyor. Daha sonrasında koşula uyulduğu sürece do içerisinde bulunan işlemler belirsiz defa tekrarlanıyor.

Örnek olarak;

<?php
$aranan = "makale";
$cumle  = "Burada veri girişi ile girilen ve uzunluğu belli olmayan bir cümle olsun. Mesela; Uğur bir gün uzmangundem.com a makale yazmış vs..";
$cumle_ = explode(' ', $cumle);
$kelimesirasi = 0;
$kelimevarmi  = false;

do {
  $kelime = $cumle_[$kelimesirasi];
  $kelimesirasi++;
	
  if ( $kelime == $aranan ) {
    $kelimevarmi = true;
    echo "Aradığımız " . $aranan . " kelimemiz, cümlemizin " . $kelimesirasi. " . kelimesidir. ";
  }
}
while (! $kelimevarmi);
?>



Yukarıdaki kod ile cümle içerisinde aradığınız kelimeden olup olmadığını $kelimevarmi değişkeni ile, eğer varsa kaçıncı kelime olduğunu da $kelimesirasi ile öğrenebilirsiniz. PHP derslerini daha iyi anlatmak için örnek olarak yazdığım bu kodları doğaçlama olarak yazdığım için belki ufak tefek hatalar çıkabilir. Eğer kodlar çalışmaz veya hata görürseniz lütfen yorumlardan bana bildirin.


While komutunun do while ile arasındaki farklar;

1- Do kullanırsak, her durumda en az bir defa do bloğunu çalıştırır.

2- Sadece while kullanacaksak, do sonrasında yazdıklarımızı bu sefer while(koşul){..yapılacaklar..} şeklinde yazıyoruz. Koşul gerçekleşene kadar tekrar edecektir. Eğer while içerisindeki değer false olursa bu sefer hiç çalıştırmayacaktır.

Döngü içerisinde kullanılan komutlar

Döngüyü atlamak, döngüyü koşulları beklemeden sonlandırmak gibi şeyler gerektiğinde döngü içerisinde devreye giren iki kod vardır. Bahsedeceğim komutlar, sadece if gibi koşullar ile birlikte kullanıldığında anlamlılık kazanır.

Break komutu

Break komutu ile döngüyü sonlandırıp sonraki işlemlere geçebilirsiniz.

Continue komutu

Continue komutu ile, bu kodun altında kalan işlemleri atlar ve döngünün bir sonraki işlemine geçer.

Örneğin ;

<?php

$kelimemiz       = "1asdasd324r";
$rakamlarToplami = 0;

for($a=0;$a<strlen($kelimemiz);$a++){
  $siradakiHarf = $kelimemiz[$a];
  
  if ($siradakiHarf <> intval($siradakiHarf)) {
    // intval fonksiyonu, verilen parametrenin sayı değerini verir. 
    // Eğer sıradaki harf, sayı değerine eşit değilse sayı değildir.
    // continue komunu veriyoruz ve sayı değilse aşağıya bakmadan
    // sıradaki harfe geçiyor. Yani aşağıdaki işlemleri atlıyor.
    continue;
  }

  $siradakiHarf = intval($siradakiHarf);  
  $rakamlarToplami += $siradakiHarf;  
  }

echo 'Bu kelimede bulunan  rakamların toplamı = '.$rakamlarToplami;
Bu makaleyi değerlendir!
[Toplam: 1 Ortalama: 5]

Bir cevap yazın