Php Dersleri – Foreach Döngüsü

Merhaba arkadaşlar. Mobilhanem.com için hazırladığımız PHP derslerimizde bu ders Foreach Döngüsünün  kullanımına bakacağız. Foreach döngüsü sayesinde diziler içerisinde daha rahat geziniriz. Foreach döngüsü Dizilere indisle erişim yerine belirlediğimiz bir değişken ile de erişmemize  olanak sağlar. Döngü dizi boyutu kadar ilerlediği için for döngüsündeki gibi bir döngü şartı eklememize gerek kalmaz. Şimdi foreach döngüsünün kullanımına bakalım.

Foreach Döngüsü Kullanımı

foreach ($dizi as $d) {
	
}
foreach ($dizi as $key => $value) {
	
}

Şeklinde iki adet kullanımı mevcut.

Birinci kullanımda dizinin her bir elemanını $d değişkenine atar dizi sonlanıncaya kadarda dögümüz devam eder.

İkinci kullanımda birinci kullanımdan farklı olarak $key değişkenine dizinin indisini $value değişkenine ise dizinin değerini atar.

$d,$key,$value değişken isimlerini kullanmak zorunda değiliz. Siz istediğiniz değişken isimlerini kullanabilirsiniz.

Örnek: Bir dizinin elemanlarını foreach kullanarak ekrana yazdıralım.

$dizi = array(1,2,3,4,5,6,7,8,9,0);
foreach ($dizi as $d) {
	echo "$d-";
}

Şeklinde dizinin bütün elemanlarını ekrana yazdırabiliriz.

Bazen key değerlerinide yazdırmak isteyebiliriz mesela:

Örnek: Bir kulanıcının bilgisinin tutulduğu diziyi oluşturup foreach döngüsü ile ekrana yazdıralım.

$dizi = array("Ad" => "Vehbi", "Soyad" => "Akdoğan", "Site" => "mobilhanem.com");

foreach ($dizi as $key => $value) {
	echo "$key: $value <br/>";
}

Kodumuzun çıktısı aşağıdaki şekilde olacaktır.

Foreach döngüsü kullanımı
Kullanımına bakacak olursak:

Dizinin o anki değerinde key değerini $key değişkenine atıyor dizinini değeini $value değişkenine atıyor ve bu işlemi dizideki elemanlar bitinceye kadar devam ettiriyor.

İki boyutlu dizilerde foreach kullanmak için normal for döngüsündeki gibi iç içe iki foreach kullanabiliriz.

$dizi = array(
	array(1,2),
	array(3,4),
	array(5,6)
);

foreach ($dizi as $d) {
	foreach( $d as $v) {
		echo "$v-";
	}
	echo "<br/>";
}

şeklinde iki boyutlu olarak kullanabiliriz.

Foreach İle İlgili Örnekler

Örnek-1: Foreach ile 1-9 aralığındaki elemanlardan oluşan dizinin elemanlarının toplamını bulalım.

$toplam = 0;
$dizi = array(1,2,3,4,5,6,7,8,9);
foreach($dizi as $d)
	$toplam+=$d;

echo "Dizinin Elemanları Toplamı: $toplam";

 

Örnek-2: Müşteri bilgilerinin tutulduğu iki boyutlu diziyi foreach ile ekrana yazdıralım.

$dizi = array(
	"musteri-1" => array("Ad" => "vehbi", "Soyad" => "Akdoğan"),
	"musteri-2" => array("Ad" => "Taha", "Soyad" => "Kırca"),
	"musteri-3" => array("Ad" => "eren", "Soyad" => "Başaran")
);

foreach ($dizi as $key1 => $val1) {
	echo "$key1 [";
	foreach( $val1 as $key2 => $val2) {
		echo " $key2 $val2";
	}
	echo "]<br/>";
}

 

Örneğimize bakacak olursak:

  • İki boyutlu key değerleri string olan bir dizi oluşturduk.
  • Birinci foreach döngümüzde key değeri olarak musteri-1 değerini aldık ve value değeri bir array.
  • İkinici foreach döngümüz ile de $val1 değişkenine atanan dizimizin içerisinde gezindik.
  • İkinci dizimizde bir string key olduğu içinde $key2 değişkenine keyi $val2 değişkenine de dizimizin değerini atadık.
  • Son olarak istediğimiz formda dizi bilgilerimizi ekrana yazdırabiliriz. Ben musteri-1[Ad Vehbi Soyad Akdoğan] şeklinde yazdırdım.

Örnek-3: Karışık formda verilen bir dizinin yani 1. elemanı dizi 2. elemanı normal değer şeklinde verilen dizinin tüm elemanlarını ekrana yazdıralım.

$dizi = array(
	1,
	array("vehbi","akdoğan"),
	"mobilhanem",
	array("web" => "http://mobilhanem.com")
);
foreach ($dizi as $d) {
	if(is_array($d)) {
		foreach($d as $v) {
			echo "$v - ";
		}
		
	}else {
		echo " $d";
	}
	echo "<br/>";
}

is_array() fonksiyonu bildiğiniz üzere parametre olarak aldığı değerin dizi olup olmadığını kontrol ediyor dizi ise TRUE değilse FALSE döndürüyordu. Bizde is_array() fonksiyonu kullanarak eğer değişkeinin veri tipi array ise ikinci foreach döngümüz ile dizinin içerisindeki elemanları da ekrana yazdırmış olduk.

 

Evet arkadaşlar Foreach Döngüsü dersimizin sonuna geldik. Bir Sonraki Dersimizde bu güne kadar öğrendiğimiz konular hakkında alıştırmalar yapacağız. Php Dersleri – Genel Tekrar 1 Dersimizde görüşmek üzere bol yazılımlı günler 🙂

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm Php Dersleri için tıklayınız..

129

Vehbi Akdoğan

Erzurum Atatürk Üniversitesi Bilgisayar Mühendisliği Mezunu
Web & Android Developer
#erzurumspor

5 Yorum

  • bana yardım edebilirmisiniz bu kodu yazamadım yardımcı olursanız çok mutlu olurum
    kendisine parametre olarak verilen iki boyutlu bir diziyi foreach döngüsü ile HTML tablo şeklinde görüntüleyen fonksiyonunu yazıp bir örnek ile gösterin

  • merhabalar bu soruya bakabilirseniz çok mutlu olurum
    kendisine parametre olarak verilen iki boyutlu bir diziyi foreach döngüsü ile HTML tablo şeklinde görüntüleyen fonksiyonunu yazıp bir örnek ile gösterin

    • Valla bende fazla bilmiyorum. yoksa yardımcı olurum.çünkü ben daha 14 yaşındayım.Ve yazılım mühendisi olacağım.yardımcı olursanız sevinirim.

  • <?php

    $toplam = 0;
    $dizi = array(1,2,3,4,5,6,7,8,9);
    foreach($dizi as $d){
    $toplam+=$d;
    }

    echo "Dizinin Elemanları Toplamı: $toplam";

  • Hocam öncelikle anlatımınız için teşekkürler.

    Veritabanındaki kayıtlarda bulunan ID’ler, çok satırlı xml içinde var mı yok mu kontrolünü nasıl yapabilirim?

    $kontrol = mysql_query(“SELECT * FROM urunler”);
    while($list = mysql_fetch_array($kontrol )){
    urun_id = $list[‘id’];

    foreach ($xml->urunler as $urunler){
    $kid = $urunler->kid;
    $uid = $urunler->uid;

    if($urun_id!=$uid){
    veritabanı sil işlemi
    }
    }

    bu şekilde yaptığımda veritabanında 300 kayıt varsa ve xml 300 satır ise yaklaşık 900 kere dönüyor 🙂 İşin içinden çıkamadım. Yapmak istediğim veritabanındaki ID’ler xml içinde yoksa veritabanından o id’yi silmek.

    xml yapısı

    10
    3

    20
    3

    11
    4

    22
    4

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?