Php Dersleri – Çok Boyutlu Diziler

Mobilhanem.com için hazırladığımız php derslerimizde bugün  Çok Boyutlu Diziler konusuna bakacağız. Diziler tek boyutlu olabileceği gibi çok boyutlu dizilerde vardır. Örneğin bir müşteri listesini dizide tutmak istersek müşteriler bir dizi müşteri bilgileri de müşteriler dizisi içinde bir dizi olur. Çok boyutlu diziler bizim işimizi kolaylaştırdığı gibi sistem performansını da artırır.

 

Çok Boyutlu Diziler

çok boyutlu dizilerin kullanım şeklinin normal dizi kulanım şeklinden bir farkı yoktur.  Bir önceki dersimizde verdiğimiz özellikler çok boyutlu diziler içinde geçerlidir. Hemen bir örnek yapacak olursak:

$arr = array(
	array(1,2,3,4,5),
	array(6,7,8,9,10),
	array(11,12,13,14,15),
	array(16,17,18,19,20)
);

Şeklinde istediğimiz boyutta dizi oluşturabiliriz. Oluşturduğumuz dizide istersek string key değeride kullanabiliriz. Hemen string key kullanımına da bir örnek verecek olursak:

$arr = array(
	
	array( "ad" => "Vehbi", "soyad" => "AKDOĞAN", "site" => "mobilhanem.com"),
	array( "ad" => "Taha", "soyad" => "KIRCA", "site" => "mobilhanem.com"),
	array( "ad" => "Eren", "soyad" => "BAŞARAN", "site" => "mobilhanem.com")
	
);

Yukarıdaki şekilde istediğimiz kadar iç içe dizi oluşturabiliriz. Dizinin elemanlarına erişmek için ise yine dizi indislerini kullanıyoruz. Oluşturduğumuz dizinin elemanlarını ekrana yazdıracak olursak:

$arr = array(
	
	array( "ad" => "Vehbi", "soyad" => "AKDOĞAN", "site" => "mobilhanem.com"),
	array( "ad" => "Taha", "soyad" => "KIRCA", "site" => "mobilhanem.com"),
	array( "ad" => "Eren", "soyad" => "BAŞARAN", "site" => "mobilhanem.com")
	
);
for($i = 0;$i<count($arr);$i++) {
	echo 'Ad:'.$arr[$i]["ad"]." Soyad:".$arr[$i]["soyad"]." Web:".$arr[$i]["site"]."<br/>";
}

Yazdırma kısmına bakacak olursak:

$arr[$i] dediğimiz dizinin i. elemanı olduğunu zaten biliyoruz. $arr[$i][$j] arr dizisinin i. elemanı bir dizi olduğunu biliyoruz ve i. dizininde j. elemanını işaret etmiş oluyoruz. İkinci dizimizin indislerini string olarak verdiğimiz için yukarıda indislere ad,soyad,site indisleriyle eriştik. Biz bunlara 0,1,2 olarakta erişebiliriz.  Konumuz bu kadar arkadaşlar şimdi öğrendiklerimizi pekiştirmek adına örnekler yapalım ve dersimizi sonlandıralım.

Çok Boyutlu Dizilerle Alakalı Örnekler

Örnek-1: 10×10 boyutunda bir dizinin elemanlarını 1-1000 aralığında  rastgele sayılarla doldurup dizimizi ekrana yazdıralım.

$dizi = array();
for($i=0;$i<10;$i++) {
	for($j = 0;$j<10;$j++) {
		$dizi[$i][$j] = rand(1,1000);
	}
}

for($i=0;$i<count($dizi);$i++) {
	for($j = 0; $j<count($dizi[$i]);$j++) {
		echo $dizi[$i][$j]." ";
	}
	echo "<br/>";
}

Örneğimizi açıklayacak olursak:

  • Öncelikle dizimizin elemanlarını rastgele oluşturduk.
  • Daha sonra ekrana yazdırırken 1. for döngümüz dizi boyutuna kadar gitsin dedik.
  • 2. döngümüz ise dizi içindeki ikinci dizimizin boyutuna kadar gidiyor. Bu örnekte dizimiz 10×10 boyutunda olduğu için  dizi boyutu kadarda gitse sıkıntı olmaz ama farklı dizi boyutlarında sıkıntı olacağı için biz 2. dizimizin boyutu kaçsa ona kadar gitsin dedik.
  • Daha sonra dizimizin değerini ekrana yazdırdık .

Örnek-2:  1-150 aralığındaki sayıların  bölenlerini tutan iki boyutlu bir dizi hazırlayalım ve dizimizi ekrana yazdıralım.

Dizi yapımız:

array( array("sayi"=> "100", 
        "bolenler" => array(1,2,4,5,10,20,25,50,100)));

şeklinde bir dizi yapısı oluşturup daha sonrada ekrana yazdıralım.

$dizi = array();
$sayilar = array();
for($i=1;$i<=150;$i++) {
	$dizi["sayi"] = $i;
	$dizi["bolenler"] = array(); // sayının bölenlerinin bir dizi olduğunu söyledik
	for($j=1;$j<=$i;$j++) {
		if($i % $j == 0) {
			// bölünüyor demektir.
			$dizi["bolenler"][] = $j;
		}else {
			// bölünmüyor demektir bir işlem yapmaya gerek yok. 
		}
	}
	$sayilar[] = $dizi; // sayılar dizisine bizim yukarıdaki oluşturduğumuz diziyi ekledik.
}


for($i=0;$i<count($sayilar);$i++) {
	echo "Sayı: ".$sayilar[$i]["sayi"]." Bölenleri {";
	for($j = 0; $j<count($sayilar[$i]["bolenler"]);$j++) {
		echo $sayilar[$i]["bolenler"][$j]." ";
	}
	echo "}<br/>";
}

Kodumuzu açıklayacak olursak:

  • $dizi değişkenini bir adet veri tutabilmek için oluşturduk.
  • $sayilar dizimizi ise oluşturduğumuz her $dizi değişkenini $sayilara ekleyip tek dizi elde etmek için kullanıyoruz.
  • daha sonra for döngüsü ile 1-150 aralığındaki sayıları gezindik.
  • 2. döngümüzde sayının bölenlerini $dizi[“bolenler”][] şeklinde yeni bir diziye attık.
  • Daha sonra $dizi değişkenini tamamladıktan sonra $sayilar dizisine attık.
  • Dizi yazdırma kısmına gelincede normal bir dizi yazdırma işlemi yaparak dizimizi ekrana yazdırdık.

Örnek-3: Yukarıdaki yaptığımız dizide asal sayı olanlara  $i sayısı asal sayıdır gibi bir uyarı yazalım.

1 ve kendisinden başka böleni olmayan sayılara asal sayılar denir.

Php Dersleri - Çok boyutlu diziler

Yandaki çıktıyı elde etmeye çalışalım.

 

 

 

 

 

$dizi = array();
$sayilar = array();
for($i=1;$i<=150;$i++) {
	$dizi["sayi"] = $i;
	$dizi["bolenler"] = array(); // sayının bölenlerinin bir dizi olduğunu söyledik
	for($j=1;$j<=$i;$j++) {
		if($i % $j == 0) {
			// bölünüyor demektir.
			$dizi["bolenler"][] = $j;
		}else {
			// bölünmüyor demektir bir işlem yapmaya gerek yok. 
		}
	}
	$sayilar[] = $dizi; // sayılar dizisine bizim yukarıdaki oluşturduğumuz diziyi ekledik.
}


for($i=0;$i<count($sayilar);$i++) {
	echo "Sayı: ".$sayilar[$i]["sayi"];
	if(count($sayilar[$i]["bolenler"]) == 2) { // 2 yapmamızın sebebi 1 ve kendisini de bölenlerinin içine eklediğimiz için
		echo " Bir asal sayıdır. <br/>";
	}else {
		echo ' Bölenleri: {';
		for($j = 0; $j<count($sayilar[$i]["bolenler"]);$j++) {
			echo $sayilar[$i]["bolenler"][$j]." ";
		}
		echo "}<br/>";
	}
	
}

Temel yapıda diziler konusunu bitirdik arkadaşlar. Dizileri istediğimiz şekilde kullanabiliriz ve dizilere ait fonksiyonlar ile işlerimizi kolayca halledebiliriz. Bu fonksiyonları ilerleyen derslerimizde ihtiyaç duydukça kullanacağız. Dizi fonksiyonlarına şimdiden göz gezdirmek isterseniz buradan bakabilirsiniz. Bir sonraki dersimiz olan Php Dersleri – Foreach Döngüsü dersimzde görüşmek üzere 🙂

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..

13

Vehbi Akdoğan

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

Yorum Yaz

Haftalık Bülten

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