Fikir Proje Ajans | Php Dersleri – İki Boyutlu Diziler Ders – 17
FikirProje
FikirProje
FPAjans
Tam Ekran

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.

Görüldüğü gibi katlar dizinin birinci boyutu, odalar ise ikinci boyutudur. Aynı diziyi şimdi farklı bir şekilde tanımlayalım.
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.

Yukarıdaki tanımlamada dikkat ederseniz öğrenciler için indis belirtilmemiştir. Dolayısıyla öğrenciler dizinin sonuna eklenecektir. Böylece ikinci boyutun indisleri ise 0,1,2 ve 3 olacaktır. İkinci boyuttaki 0; birinci öğrenci olarak düşünülürse, 1,2 ve 3 ise sırasıyla diğer öğrenciler olarak düşünülebilir. Bu tamamen sizin tasarrufunuzda olan bir anlamlandırmadır. Aynı diziyi faklı bir şekilde 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]

Fikir Proje olarak sizlere elimizden geldiğince, yararlı bilgiler paylaşmaya çalışıyoruz. Sizlerde bu paylaşımlarımızı, sosyal ağ ve diğer ağlarınızda paylaşırsanız seviniriz. Bilgi paylaştıkça çoğalır.

Bir Yorum Yazar Mısın?