PHP For, Foreach ve While Döngüleri ile Kullanımları

PHP ile ilgili yazılara bayağıdır devam etmediğimi fark ettim ve az da olsa yeni bir şeyler yazmaya karar verdim. Ufaktan döngülere değineceğiz bu dersimizde.

Döngü bildiğiniz gibi bir işlemi birden fazla kez veya bir koşul sağlanana kadar yapmak anlamına geliyor. Veya en kötü 1 den 15’e kadar yaptığımız işlemlere döngü diyoruz.

While, koşul sağlanana kadar yapılan döngüyken, For belirli bir bilinen içerisinde dönen kod kümesi oluyor.

Yani şöyle anlatalım: while dediğimiz zaman, saçma bir örnek vermek gerekirse ‘su aktığı sürece’ gibi şeyler diyebiliyoruz. (çeşmeyi açtığınızı var saydım :))

While (‘su akıyorken’)
tabakları yıka
endwhile;

Bu aşamadan sonra ne oldu? Tahmin ettiğiniz üzere suyu kapattık ve tabakları yıkamayı bıraktık. Bu durumda da while döngüsü sonlanmış oldu. Basit olarak while döngüsü budur.

PHP döngülerinde asıl önemli olan For döngüsüdür diyebiliriz. Yani en çok for kullanılmakta. Genelde dizeler (array) ile çalıştığımızdan for tek başına bile yetebiliyor. Bu sebeple for döngüsünü biraz daha uzun ve güzel anlatalım.

PHP For Döngüsü

For döngüsü, şuradan şuraya kadar, şundan şunu kadar gibi anlamlar ile açıklanabilir. Yukarıda da verdiğimiz örnek gibi: 1’den 5’e kadar veya 10’dan 15’e kadar gibi şeylerde vazgeçilmez döngümüzdür.

Bu nerede karşımıza çıkıyor derseniz dizeler demiştik. Bir sorgu yaptınız ve dönen değer array olarak geldi diyelim ve şöyle örneklendirelim:

$deger = Array(‘deger 1’, ‘deger 2’, ‘deger 3’, ‘deger 4’);

Şimdi biz bu dizenin 4 basamaklı olduğunu biliyoruz ve basit olarak $deger[0], $deger[1]… şeklinde echo ettirebiliriz diyelim. Ama bir de bilmediğimiz zamanları düşünün. Yani dizenin kaç basamaklı olduğunu bilmiyoruz.

$deger = cok basamaklı array (basamak sayısı bilinmiyor…)

Bu dizeyi nasıl işleyeceğiz? İşte burada for döngüsü yardımımıza koşuyor. Sadece basit olarak 1’den 50’ye şeklinde gitmek yerine, asıl bu tip işlemlerde yardımcı for döngüsü.

Hemen bu basamak sayısı bilinmeyen dizeyi for döngüsüyle nasıl işleyeceğimizi gösterelim:

$degerbasamak = count($deger);
For($i=0;$i<$degerbasamak;$i++) {
   echo $deger[$i];
}

Yukarıdaki kodu açıklayalım. $degerbasamak değişkenine, dizenin basamak sayısını count komutu ile atadık. Bu neden önemli? Çünkü for döngüsü için bitiş noktası olacak.

Yani ne dedik: $i = 0 dedik. Bu 0 dan başlıyoruz anlamında kullanılıyor. Ve devamı olarak $i < $degerbasamak dedik. Bu da 0 dan başlıyorsun ve $degerbasamak sayısını geçmeyene kadar devam ediyorsun dedik.

Burada sıfırdan başlamak kafanızı karıştırmasın. $i < $degerbasamak dememizin sebebi sıfırdan başlamamızdır. Yani dizemiz 30 basamaklıysa, sıfırdan başladığımız için aslında 29’da bitecektir. Bu sebeple for döngüsünü 30 kere çalışınca (29’da) sonlandırıyoruz.

Son olarak $i++ kısmı da $i değişkeninin nasıl seyredeceği anlamında. Örnek olarak buraya $i– deseydik, 0 dan 30 a gitmek yerine 0, -1, -2 şeklinde seyredecekti. Bunu çifter çifter, üçer beşer vesair şeklinde atlamak için kullanabilirsiniz sonraki aşamalarda.

echo $deger[$i] kısmı, anladığınız üzere basit olarak $deger dizesinin $i basamağına ulaşmak için yaptığımız bir şey.

For döngüsünü biraz daha detaylandıralım ve daha da güzel ve profesyonel olan Foreach döngüsüne geçelim şimdi de.

PHP Foreach Döngüsü

Foreach, dize sayısıyla hiç uğraşmadan işleri halletmemizi sağlayan bir şey. Aslında yalnızca dize olarak düşünmemek lazım bunu. Foreach, bir şeyin içindeki şeyler anlamıyla açıklanabilir.

Foreach genelde json veriler ve benzeri şeyler için çok kullanışlıdır. Ayrıca preg_match_all komutu için gayet yardımcıdır bot yapan arkadaşlara 🙂

preg_match_all(…, $donen);

Yukarıdaki komutla bir web sayfasından sonuç topladığımızı varsayalım. PHP Bot yaptık diyelim ve bir kaynaktaki resimleri bununla aldık diyelim. ve bunu foreach ile işleyelim:

foreach($donen as $don)
{
   print_r($don);
}

Gördüğünüz gibi gayet basit. Her $donen (her basamağı) için $don değişkenisin sen dedik ve o değişkeni foreach içinde işledik.

Şimdilik daha fazla uzatamıyorum 🙂 For, while, foreach, do vesair herhangi bir döngü konusunda aklınıza takılan varsa çekinmeden sorabilirsiniz. İyi kodlamalar…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir