PHP ÇOK BOYUTLU ( Multidimensional ) DİZİLER

Birden çok anahtarı olan dizilere çok boyutlu dizi denir. Çok boyutlu dizilerde iç içe istenildiği kadar dizi oluşturulabilir. Kullanım şekli şu şekildedir.


<?php

$dizi_adi   =  array(

   anahtar1 => array(değer1.1,değer1.2....),
				 
   anahtar2 => array(değer2.1,değer2.2....),
				 
			 ...);
				 
 ?>

Şu şekilde de gösterilir.

       
<?php

$dizi_adi  =  array(

   anahtar1 =>array(anahtar1.1 => değer1.1,
				 
                    anahtar1.2 => değer1.2,...),
                 				 
   anahtar2 =>array(anahtar2.1 => değer2.1,
				 
                    anahtar2.2 => değer2.2,...),
                 				 	 
			 ...);
 ?>

Görüldüğü gibi çok boyutlu dizilerin her bir satırı tek boyutlu yada ilişkilendirilmiş dizilerden oluşmaktadır.

İlişkilendirilmiş dizilerde olduğu gibi burada anahtar olarak kullanılan alanlar sadece integer yada string veri türünde olabilir. Değerlerin ise tür sınırlandırılması bulunmaktadır.

Dizi içinde başka bir dizi kullanarak çok boyutlu bir yapı oluşturmanız da mümkün.


<?php

$sinif = array(

         array("1A","3B","2D"),
		 
         array("Hakan", "Ahmet", "Serkan"),
	
         array(95, 65, 35)
		 
         );

echo "<pre>";

print_r($sinif);

echo "</pre>";
?>

Array
(
    [0] => Array
        (
            [0] => 1A
            [1] => 3B
            [2] => 2D
        )

    [1] => Array
        (
            [0] => Hakan
            [1] => Ahmet
            [2] => Serkan
        )

    [2] => Array
        (
            [0] => 95
            [1] => 65
            [2] => 35
        )

)

Yukarıda görüldüğü üzere çok boyutlu dizilerde indis değerlerini ilişkili belirtmek veya belirtmemek sizin ihtiyacınıza bağlıdır. Fakat erişim kolaylığı için indis değerlerini özel olarak belirtmek fayda vardır.

"0 => array" başlayarak örneğimizde indis numara belirtelim ve 3b sınıfında ki Ahmet öğrencinin notuna erişelim.


<?php

$sinif = array(

     0 =>array("1A","3B","2D"),
	
     1 =>array("Hakan", "Ahmet", "Serkan"),
	
     2 =>array(95, 65, 35)
);


echo "sınıfı.:".$sinif[0][1]." -".$sinif[1][1]

             .".:".$sinif[2][1];
?>

ÇIKTI:

sınıfı.:3B - Ahmet.:65

Anahtar-değer mantığını çok boyutlu dizilerde de kullanabilirsiniz.


<?php


$sinif  =  array(

 "Sınıf"=> array("1A","3B","2D"),
	
 "Adı"  => array("Hakan", "Ahmet", "Serkan"),
	
 "Notu" => array(95, 65, 35)
);


echo $sinif["Sınıf"][1]."<br>";

echo $sinif["Adı"][1]."<br>";

echo $sinif["Notu"][1];

?>

ÇIKTI:

3B

Ahmet

65

Günlük hayatta nasıl ki bazı bilgiler birbirleriyle bağlantılıysa php dilimizde de veriler birbiriyle bağlantılıdır. Aslında bu durum bütün programlama dillerinde geçerlidir.

Aşşağıdaki şemaya göre dizimizi oluşturalım.


php array


<?php

$okul = array(

 "8/a"=>array("hakan"=> 95,
 
              "fatih"=> 45,
			  
	      "ayşe" => 65 ),
			  
 "8/b"=>array("timur"=> 55,
 
              "emine"=> 80,
			  
	      "ömer" => 55 )
 
);
 
 echo $okul["8/b"]["timur"]; // Ekrana 55 yazar
 
 echo "<br>";
 
 echo $okul["8/a"]["fatih"]; // Ekrana 45 yazar
 
?>

Aynı diziyi şimdi farklı bir şekilde tanımlayalım.


<?php

$okul["8/a"]["hakan"] = 95;

$okul["8/a"]["fatih"] = 45;

$okul["8/a"]["ayşe"]  = 65;

$okul["8/b"]["timur"] = 55;

$okul["8/b"]["emine"] = 80;

$okul["8/b"]["ömer"]  = 55;
 
  echo $okul["8/a"]["ayşe"]; // Ekrana 65 yazar
 
  echo "<br>";
 
  echo $okul["8/b"]["emine"]; // Ekrana 80 yazar
 

?>

Yine bir örnekle açıklamak gerekirse bir otelin katları bir dizi olarak düşünülürse katlardaki odalar da bir dizi olarak düşünülebilir. Dolayısıyla burada dizi içindeki diziler söz konusudur. Aşağıda ki şemaya göre dizimizi oluşturalım.


php array


<?php

 $otel = array(

 "kat1"=>array("oda1"=>"Hasan",
 
               "oda2"=>"Ahmet",
			   
	       "oda3"=>"Kenan"),
 
 "kat2"=>array("oda1"=>"Mert",
 
               "oda2"=>"Ali",
			   
	        "oda3"=>"Metin"),
 
 "kat3"=>array("oda1"=>"Ayşe",
 
               "oda2"=>"Fatma",
			   
	        "oda3"=>"Emine")
);

echo "<pre>";

print_r($otel);

echo "</pre>";

?>

ÇIKTI:


Array
(
    [kat1] => Array
        (
            [oda1] => Hasan
            [oda2] => Ahmet
            [oda3] => Kenan
        )

    [kat2] => Array
        (
            [oda1] => Mert
            [oda2] => Ali
            [oda3] => Metin
        )

    [kat3] => Array
        (
            [oda1] => Ayşe
            [oda2] => Fatma
            [oda3] => Emine
        )

)

Aynı diziyi şimdi farklı bir şekilde tanımlayalım.


<?php

$otel["kat1"]["oda1"]="Hasan";

$otel["kat1"]["oda2"]="Ahmet";

$otel["kat1"]["oda2"]="Kenan";
 
$otel["kat2"]["oda1"]="Mert";
$otel["kat2"]["oda2"]="Ali";
$otel["kat2"]["oda3"]="Metin";
 
$otel["kat3"]["oda1"]="Ayşe";

$otel["kat3"]["oda2"]="Fatma";

$otel["kat3"]["oda3"]="Emine";
 
  echo $otel["kat2"]["oda3"]; // Ekrana Metin yazar

?>


Mesut Velioğlu 20/09/2020

Merhaba hocam, şu şekilde bir döngüden daha sonra kullanılmak üzere bir dizi çıkartmam gerekli.. Ama bir türlü yapamadım. Yardımcı olursanız sevinirim.kodlarım şöyle.. foreach($sip_ex as $key => $deger) { $dizi[]= array($deger['mac_id']); $a++; }

yönetici 21/09/2020

Mesut, for each döngüyü yanlış kullanmışın, Çıktı olarak sadece for each döngüde echo komutunu kullan. print_r çıktı olarak kullanılmaz. sadece webmasterlar döngü yapmadan kodlar çalışıyormu diye bakar. PHP FOREACH DÖNGÜSÜ bak ve örnekleri deneyerek konuyu anla.
Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır.

8005

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML DİV ve SPAN NEDİR?
  • HTML FORM OLUŞTURMA
  • HTML RESİM EKLEME
  • HTML KAYAN RESİM VE Marguee KULLANIMI
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.