Php Dersleri – İki Boyutlu Diziler Ders – 17
Çok Boyutlu Diziler
Dizi içindeki diziler olarak düşünülebilir. 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. Başka bir örnek olarak şu verilebilir: Sınıftaki öğrenciler bir dizi, onları notları ise yine bir dizi olarak dününülürse yine karşımıza dizi içindeki diziler çıkmaktadır.
Çok boyutlu dizilerde her boyutun indisi için [ ] kullanılır. Aşağıdaki örneği inceleyebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $otel [ "kat1" ][ "oda1" ]= "Ali" ; $otel [ "kat1" ][ "oda2" ]= "Ahmet" ; $otel [ "kat1" ][ "oda2" ]= "Ömer" ; $otel [ "kat2" ][ "oda1" ]= "Hasan" ; $otel [ "kat2" ][ "oda2" ]= "Kenan" ; $otel [ "kat2" ][ "oda3" ]= "Mert" ; $otel [ "kat3" ][ "oda1" ]= "Ayşe" ; $otel [ "kat3" ][ "oda2" ]= "Fatma" ; $otel [ "kat3" ][ "oda3" ]= "Hatice" ; echo $otel [ "kat2" ][ "oda3" ]; // ekrana Mert yazar ?> |
1 2 3 4 5 6 7 8 9 | <?php $otel = array ( "kat1" => array ( "oda1" => "Ali" , "oda2" => "Ahmet" , "oda3" => "Ömer" ), "kat2" => array ( "oda1" => "Hasan" , "oda2" => "Kenan" , "oda3" => "Mert" ), "kat3" => array ( "oda1" => "Ayşe" , "oda2" => "Fatma" , "oda3" => "Hatice" ) ); echo $otel [ "kat2" ][ "oda3" ]; // ekrana Mert yazar ?> |
Not: En son tanımlanan dizinin sonunda virgül (,) yoktur. Dikkat ediniz. Çünkü virgül dizi elemanlarını ayırır. En son elamandan sonra elaman olmadığından virgül konmaz.
Bir sınıftaki öğrencilerin matematik dersinden almış oldukları 3 notu öğrenci numaralarına göre saklayan bir dizi tanımlayalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $matematik [155][1]=52; $matematik [155][2]=64; $matematik [155][3]=35; $matematik [225][1]=98; $matematik [225][2]=90; $matematik [225][3]=70; $matematik [302][1]=15; $matematik [302][2]=45; $matematik [302][3]=63; ?> |
Burada birinci boyut öğrenci numaraları (155, 225 ve 302), ikinci boyut ise sınavlar (1, 2 ve 3) olarak düşünülmüştür. Bunlara atanan sayılar ise değerler yani öğrencilerin almış oldukları notlar (52, 64, 35, …) olarak düşünülebilir. Aynı diziyi toplu bir şekilde tanımlamak istersek aşağıdaki gibi yapabiliriz.
1 2 3 4 5 6 7 | <?php $matematik = array ( 155=> array (1=>52,2=>64,3=>35), 225=> array (1=>98,2=>90,3=>70), 302=> array (1=>15,2=>45,3=>63) ); ?> |
Örnek: Aşağıdaki tabloda 3 farklı sınıfın 4’er öğrencisinin gösterildiğini kabul ederek bunu bir dizi olarak tanımlayalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php $okul [0][]= "Ebru" ; $okul [0][]= "Fuat" ; $okul [0][]= "Gülüzar" ; $okul [0][]= "Emre" ; $okul [1][]= "Zeynep" ; $okul [1][]= "Haşim" ; $okul [1][]= "Merve" ; $okul [1][]= "Nihat" ; $okul [2][]= "Raşit" ; $okul [2][]= "Gizem" ; $okul [2][]= "Onur" ; $okul [2][]= "Ayşe" ; echo $okul [1][1]; // ekrana Haşim yazar ?> |
1 2 3 4 5 6 7 | <?php $okul []= array ( "Ebru" , "Fuat" , "Gülüzar" , "Emre" ); $okul []= array ( "Zeynep" , "Haşim" , "Merve" , "Nihat" ); $okul []= array ( "Raşit" , "Gizem" , "Onur" , "Ayşe" ); echo $okul [1][2]; // ekrana Merve yazar ?> |
Dikkat ederseniz burada hiçbir indis belirtilmemiştir. Dolayısıyla her dizi elemanı dizinin sonuna eklenecektir. Böylece her iki boyutun indisleri 0 dan başlayacaktır. Eğer indislerin 1 den başlmasını isterseniz şöyle bir tanımlama yapabilirsiniz.
1 2 3 4 5 6 7 | <?php $okul [1]= array (1=> "Ebru" , "Fuat" , "Gülüzar" , "Emre" ); $okul []= array (1=> "Zeynep" , "Haşim" , "Merve" , "Nihat" ); $okul []= array (1=> "Raşit" , "Gizem" , "Onur" , "Ayşe" ); echo $okul [1][2]; // ekrana Merve yazar ?> |
Şimdi de aynı diziyi iki farklı şekilde daha tanımlayalım.
Aşağıdaki tanımlamada her iki boyutun indisleri 0 dan başlar.
1 2 3 4 5 6 7 8 9 | <?php $okul = array ( array ( "Ebru" , "Fuat" , "Gülüzar" , "Emre" ), array ( "Zeynep" , "Haşim" , "Merve" , "Nihat" ), array ( "Raşit" , "Gizem" , "Onur" , "Ayşe" ) ); echo $okul [1][2]; // ekrana Merve yazar ?> |
Aşağıdaki tanımlamada ise her iki boyutun indisleri 1 den başlar.
1 2 3 4 5 6 7 8 9 | <?php $okul = array ( 1=> array (1=> "Ebru" , "Fuat" , "Gülüzar" , "Emre" ), array (1=> "Zeynep" , "Haşim" , "Merve" , "Nihat" ), array (1=> "Raşit" , "Gizem" , "Onur" , "Ayşe" ) ); echo $okul [1][2]; // ekrana Fuat yazar ?> |
Dizilerdeki boyut sayısını daha da artırabilirsiniz. O zaman dizi içindeki dizilerin içindeki dizilerden bahsetmiş olursunuz ki bunlarında mantığı yukarıda anlatılan iki boyutlu diziler gibidir. İhtiyaç duyulduğunda bunlar da kullanılabilir. Örneğin 3 boyutlu bir dizi olarak, okuldaki sınıflarda bulunan öğrencilerin coğrafya dersinden aldıkları 2 farklı notu saklayan bir dizi düşünülebilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php // birinci sınıf $cografya [0][156][]=74; // birinci sınıfın 156 nolu öğrencisinin birinci coğrafya notudur. $cografya [0][156][]=68; // birinci sınıfın 156 nolu öğrencisinin ikinci coğrafya notudur. $cografya [0][174][]=18; // birinci sınıfın 174 nolu öğrencisinin birinci coğrafya notudur. $cografya [0][174][]=23; // birinci sınıfın 174 nolu öğrencisinin ikinci coğrafya notudur. // ikinci sınıf $cografya [1][223][]=56; // ikinci sınıfın 223 nolu öğrencisinin birinci coğrafya notudur. $cografya [1][223][]=61; // ikinci sınıfın 223 nolu öğrencisinin ikinci coğrafya notudur. $cografya [1][254][]=41; // ikinci sınıfın 254 nolu öğrencisinin birinci coğrafya notudur. $cografya [1][254][]=63; // ikinci sınıfın 254 nolu öğrencisinin ikinci coğrafya notudur. // üçüncü sınıf $cografya [2][415][]=33; // üçüncü sınıfın 415 nolu öğrencisinin birinci coğrafya notudur. $cografya [2][415][]=51; // üçüncü sınıfın 415 nolu öğrencisinin ikinci coğrafya notudur. $cografya [2][521][]=89; // üçüncü sınıfın 521 nolu öğrencisinin birinci coğrafya notudur. $cografya [2][521][]=96; // üçüncü sınıfın 521 nolu öğrencisinin ikinci coğrafya notudur. echo $cografya [1][254][1]; // ekrana 63 yazar. ikinci sınıfın 254 nolu öğrencisinin ikinci coğrafya notudur. ?> |
Aynı diziyi toplu bir şekilde tanımlayalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php $cografya = array ( array ( // birinci sınıf 156=> array (74,68), // birinci öğrenci 174=> array (18,23) // ikinci öğrenci ), array ( // ikinci sınıf 223=> array (56,61), // birinci öğrenci 254=> array (41,63) // ikinci öğrenci ), array ( //üçüncü sınıf 415=> array (33,51), // birinci öğrenci 521=> array (89,96) // ikinci öğrenci ) ); echo $cografya [1][254][1]; // ekrana 63 yazar. ikinci sınıfın 254 nolu öğrencisinin ikinci coğrafya notudur. ?> |
[/vc_column][/vc_row]
Bir Yorum Yazar Mısın?