PHP Dersleri 14: Döngüler 3

Geçen derslerde for ve while döngülerini çalışmıştık. Artık döngüler konusuna alışmış olduğunuzdan, kalan döngüleri tek bir derste işlemekten yana bir sıkıntı görmüyorum. While’ın bir türevi olan do-while döngüsü ve dizi elemanlarında işimizi çok kolaylaştıran bir döngü türü olan foreach döngüsü ile konuyu kapatacağım.

Do-whlie döngüsü ile işe başlıyoruz.

While döngüsünde, önce şartı kontrol edip daha sonra işlemi yapardı. Yani PHP yorumlayıcımız, while($i < 4) şeklinde bir satıra denk geldi, döngünün gövdesine çalıştırmaya başlamadan önce, koşulu kontrol ediyor. Eğer koşul sağlanmıyorsa, döngünün gövdesi hiç çalışmıyordu. Yani while döngüsünde iterasyon sayısı 0 olabiliyor.

Do-while döngüsünde ise öncelikle bir iterasyon yapılıyor, sonra koşul kontrol ediliyor. Bu nedenle en az bir iterasyon yapıyor.

Şimdi aynı döngü gövdesini, while ve do while ile kodlayıp ikisinin çıktılarını da görelim.


<?php


$i = 5;


while($i < 3)

{

echo "Ben while döngüsüyüm" . "
"; $i++; } do { echo "ben do-while döngüsüyüm
"; $i++; } while($i

Burada aynı koşullu ve çok benzer gövdeli iki tip döngüye göre kodlama yaptık. Ekranımıza şu şekilde çıktı veriyor.

 

while döngüsünde önce koşulu kontrol ettiği için döngü gövdesini çalıştırmıyor.

Şimdi gelelim foreach döngüsüne, foreach döngüsü dizi değişkenlerinde ve koleksiyonlarda kullanılıyor.

Foreach döngüsünün iki adet farklı sözdizimi var, ilkinde dizinin bütün elemanlarının değerler geçiyor. İkinci sözdiziminde dizideki bütün elemanlar anahtar isimleriyle birlikte anahtar-değer ikilisi olarak geçiyor.

Öncelikle ilk basit sözdizimini kullanarak bir örnek yapalım.


<?php

$dizi = array(1, 2, 3, 5, 8, 13, 21);


echo "elemanların iki katları: 
"; foreach ($dizi as $deger) { echo $deger * 2 . "
"; } ?>

 

dizideki bütün elemanların iki katlarını sırayla, alt-alta ekrana yazdırıyor.

Şimdi bu güne kadar değinmediğimiz bir konuya değineceğiz, referanslar. Referanslar tam olarak karşılamasa dahi, C’deki pointer’ın bir dengi.

Referans bir değişkenin, bellekteki konumuna hitap eder yani bu şekilde, dizideki herhangi bir elemana değil içerisindeki değere ulaşma şansımız var.

Aynı örnekte birazcık değişiklik yaparak diziyi tamamen modifiye edeceğiz. Kodumuzun çıktısı bu olacak. Dizilerdeki bütün elemanları ikiye katlayacağız.

<?php

$dizi = array(1, 2, 3, 5, 8, 13, 21);

echo "elemanların iki katları: 
"; foreach ($dizi as &$deger) { $deger = $deger * 2; } print_r($dizi); ?>

ilk örnekten farkı şu, biz ilk örnekte, bir değişken değeri ele alırken, ikinci örnekte değişkenin kendisini ele aldık.

Şimdi foreach’in ikinci türüne geçiyoruz. Daha önce kullandığımız dizi içerisindeki dizimizi, ve anahtar değer ikilisi örneği yapacağız.

 "Fiat", "satis" => 12, "stok" => 9),

array("marka" => "BMW", "satis" => 20, "stok" => 2),

array("marka" => "Volvo", "satis" => 8, "stok" => 8)

);

for($i = 0; $i < count($arabalar); $i++){

$araba = $arabalar[$i];


foreach ($araba as $anahtar => $deger) {

echo $anahtar . " anahtarında " . $deger . " değerinde 
"; } } ?>

 

öncelikle for döngüsü ile her bir diziyi tek olarak ele alıyoruz. Foreach döngüsünde ise, arabadaki her anahtar ve değeri birer birer ekrana yazdırıyoruz. Bu kodumuzun çıktısı ise tahmin ettiğiniz gibi oluyor:

Bu dersle ilgili sorularınızı, eleştirilerinizi ve önerilerinizi bekliyorum. İyi çalışmalar dilerim.

Leave a Reply

Your email address will not be published. Required fields are marked *