PHP ile Dizi Örnekleri - Bölüm 3

PHP Dilinde Çok Boyutlu Diziler Bölüm 3

PHP ile Veritabanı uygulamaları geliştirme konusuna girmeden önce Diziler konusunun iyi öğrenilmesinin gerekliliğine inanıyorum. Daha önce PHP dilinde diziler(arrays) konusunu 2 bölüm olarak işlemiştik, bu bölümlere aşağıdaki bağlantılardan ulaşabilirsiniz.

Bölüm 1: Tek Boyutlu Diziler
Bölüm 2: Çok Boyutlu Diziler

Anahtar => Değer Şeklinde Olan Diziler


Bu dizilerin mantığını sözlükte kelimelerin tutulmasına benzetebiliriz. Örneğin İngilizce sözlüğü düşünelim, her kelimenin karşısında bir veya birden fazla değer vardır. Burada aranan sözcük anahtar, anlamı ise değer olarak ifade edilir. Aşağıdaki örnek incelendiğinde daha iyi anlaşılacaktır.

 Plaka  Şehir
 34  İstanbul
 06  Ankara
 23  Elazığ
 21  Diyarbakır


<?php
 
$dizi= array("34"=>"İstanbul",
    "06"=>"Ankara",
    "16"=>"Bursa",
    "23"=>"Elazığ",
    "21"=>"Diyarbakır");
 
foreach($dizi as $sayi=>$sehir)
{
  echo "$sayi plakalı şehir: $sehir <br>";
}

?>
Yukarıdaki dizide anahtar=> değer çifti şeklindeki dizide plaka => şehir şeklinde atanmıştır, dizi elamanları arasında virgül konduğuna dikkat ediniz, array kelimesi de mutlaka konmalıdır. Kolay okunabilsin diye dizinin her bir anahtar=>değer çiftini ayrı satırda yazdık, tek bir satır halinde de yazabilirsiniz.  Burada anahtar'dan değere  ulaşmak mümkündür. Örneğin;
 
echo $dizi["34"];  //Ekrana İstanbul yazar
echo $dizi["06"];  //Ekrana Ankara yazar

 
Foreach döngüsü ile dizinin bütün elemanlarını ekrana yazdık, foreach döngüsü bu döngüde dizinin sonuna kadar dönecektir. foreach ($dizi as $anahtar=> $deger) şeklinde kullanıyoruz. Burada elemanları ekrana yazdırılacak dizi adını yazdıktan sonra as (gibi) ifadesi ile $sayi => $sehir şeklinde dizi dönerken $sayi değişkenine plaka, $sehir değişkenine de şehir adının atanmasını sağlıyoruz. 
 

Aşağıdaki örnekte ise bir üyeye ait birden fazla bilginin Adı, Soyadı ve Yaş bilgisinin tutulmasını sağlıyoruz. Her üyenin birden fazla bilgisi olacağı için dizi içinde dizi şeklinde atamayı yapıyoruz. 

<?php
 
$uyeler=array(
    array("adi"=>"Oğuzhan","soyadi"=>"Taş","Yaş"=>"30"),
    array("adi"=>"Sinan","soyadi"=>"Can","Yaş"=>"40"),
    array("adi"=>"Yağızhan","soyadi"=>"TAŞ","Yaş"=>"2"),
);
 
for($i=0;$i<count($uyeler);$i++){
   echo $uyeler[$i]["adi"]." ".
   $uyeler[$i]["soyadi"]." ".
   $uyeler[$i]["Yaş"]."<br>";
 
}
 
?>

Yukarıdaki örnekte dizinin elemanlarına aşağıdaki şekilde erişlmektedir.

$uyeler[0]["adi"];
$uyeler[0]["soyadi"]
$uyeler[0]["yas"]

$uyeler[1]["adi"];
$uyeler[1]["soyadi"]
$uyeler[1]["yas"]

$uyeler[2]["adi"];
$uyeler[2]["soyadi"]
$uyeler[2]["yas"]

Bu elemanların tümünü yazdırmak için for döngüsü aşağıdaki şekilde hazırlanmıştır.

for($i=0; $i<count($uyeler);  $i++)
{

   echo $uyeler[$i]["adi"]." ".
   $uyeler[$i]["soyadi"]." ".
   $uyeler[$i]["Yaş"]."<br>";
}
 
Aşağıdaki örnekte de bir öğrencinin Adı, Soyadı ve 3 Sınav notu dizide tutulmaktadır. Döngü üçünde tüm öğrencilerin teker teker geçme notu ((Sınav1+Sınav2+Sınav3)/3) bulunmakta, en sonda da sınıf ortalaması hesaplanmaktadır. Sınıf ortalaması da öğrencilerin geçme notları toplamının öğrenci sayısına bölümü ile hesaplanmaktadır. 

<?php
//öğrencinin adı soyadı ve aldığı 3 not vardır. 
// Bu dersten her öğrecinin adı soyadı ve geçme notunu
// en sonda da sınıf ortalamasını  bulunuz.

$ogrenci=array(
   
    array("Adi"=>"Oğuzhan TAŞ","sinav1"=>50,"sinav2"=>60,"sinav3"=>70),
    array("Adi"=>"Ali Can","sinav1"=>50,"sinav2"=>64,"sinav3"=>60),
    array("Adi"=>"Oğuz Can","sinav1"=>80,"sinav2"=>90,"sinav3"=>40)
 
);
 
$genelOrt=0;
for($i=0;$i<count($ogrenci); $i++)
{
    $gecmeNotu=($ogrenci[$i]["sinav1"]+
    $ogrenci[$i]["sinav2"]+
    $ogrenci[$i]["sinav3"])/3;

   echo $ogrenci[$i]["Adi"]." ".$gecmeNotu."<br>";
   $genelOrt += $gecmeNotu;

}
 
echo "Sınıf Ortalaması:".$genelOrt/count($ogrenci);


Aşağıdaki örnekte de her bir kişinin not sayısı farklıdır, kimi öğrenci 3 sınava girmiş, kimi öğrenci 2 sınava, kimi öğrenci 4 sınava girmiştir. Aşağıdaki döngü ile öğrenci kaç sınava girmiş ise ona göre ortalama hesaplanmaktadır. İki sınava girmiş ise 2 not toplanıp, 2'ye bölünmekte, 4 Sınava girmiş ise 4 not toplanıp 4'e bölünmektedir.



<?php
$dizi = array(
"Oğuzhan"=>array(50,60,70),
"Veli"=>array(50,40),
"Can"=>array(80,60,70,85)
);
 
foreach($dizi as $isim=>$notlar){
echo $isim." ";
$toplam=0; $ortalama=0; $sayac=0;
 
foreach ($notlar as $not){
echo $not." ";
$toplam=$toplam+$not;
$sayac++;
}
$ortalama=$toplam/$sayac;
echo " Ortalama=".$ortalama;
echo "<br>";
}
 
?>

Mutlu Kodlamalar,
Oğuzhan TAŞ (Kasım 2015)
Bookmark and Share