BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > PHP > PHP diziler (Array)

PHP diziler (Array)

Dizi (Array) aynı veya farklı türden verileri tek bir değişken adı altında toplayıp erişim sağlayabileceğimiz bir bileşik veri türüdür.

Dizi içine yerleştireceğimiz her bir veriyi hem değer adı (key) hem de değer (value) olarak veya sadece değer olarak atayabiliriz.

değer adı (key) : Sadece integer veya string veri türü olabilir.

değer (value) : Herhangi bir veri türü olabilir.

Bir dizi array() fonksiyonu ile oluşturulur ve bir değişkene atanır:

array ( değer adı => değer, ... ); // Değer adı ve değeri birlikte atama

array ( değer, değer, ...); // Sadece değer atama

array ( değer adı => değer, değer, ... ); // İki yöntemi birlikte kullanma

Farklı değer atama ve erişim yöntemleri


$arr_deg01 = array ("Adı" => "Ahmet", "Soyadı" => "Ertürk", "Yaşı" => 25); // Değer adı ve değer
echo $arr_deg01["Adı"]; // Ahmet (Ekrana yazar)

$arr_deg02 = array ("Adı" => "Ahmet", 10 => "Ertürk", 11 => 27, 12 => TRUE); // Değer adı ve değer
echo $arr_deg02[11]; // 27 (Ekrana yazar)

$arr_deg03 = array ("Ahmet", "Ertürk", 25); // Sadece değer atama
echo $arr_deg03[1]; // Ertürk (Ekrana yazar)

$arr_deg04 = array (5, 10, 15, 20, 25); // Sadece değer atama
echo $arr_deg04[0]; // 5 (Ekrana yazar)

$arr_deg05 = array ("Adı" => "Ahmet", "Soyadı" => "Ertürk", 25); // İki yöntemi birlikte kullanma
echo $arr_deg05[0]; // 25 (Ekrana yazar)

Bir veriyi değer adı ve değer olarak atadığımızda veriye erişim için değer adını kullanmamız gerekir:

$arr_deg["Adı"]

Bir veriyi sadece değer olarak atadığımızda ise veriye erişim için dizi adı ile indeks değeri (dizinin ilk veri indeksi 0'dır) kullanmamız gerekir:

$arr_deg[indeks]


<html>
<body>

<?php
    $arr_deg01 = array ("Adı" => "Ahmet", "Soyadı" => "Ertürk", "Yaşı" => 25);
    $arr_deg02 = array ("Adı" => "Ahmet", 10 => "Ertürk", 11 => 27, 12 => TRUE);
    $arr_deg03 = array ("Ahmet", "Ertürk", 25);
    $arr_deg04 = array (5, 10, 15, 20);
    $arr_deg05 = array ("Adı" => "Ahmet", "Soyadı" => "Ertürk", 25, 
                        "İşi" => "Öğrenci", 3);

    echo $arr_deg01["Adı"]." ".$arr_deg01["Soyadı"]." ".$arr_deg01["Yaşı"].'<br/>';

    echo $arr_deg02["Adı"]." ".$arr_deg02[10]." ".$arr_deg02[11]." ".$arr_deg02[12];
    echo '<br/>';	

    /* ilk dizi elemanına 0'dan başlayarak indeksleme yapılır. */
    echo $arr_deg03[0]." ".$arr_deg03[1]." ".$arr_deg03[2].'<br/>'; 
	
    /* ilk dizi elemanına 0'dan başlayarak indeksleme yapılır. */
    echo $arr_deg04[0]." ".$arr_deg04[1]." ".$arr_deg04[2]." ".$arr_deg04[3].'<br/>';

    echo $arr_deg05["Adı"]." ".$arr_deg05["Soyadı"]." ".$arr_deg05[0]." ".$arr_deg05[1];
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığımızda, web tarayıcımızda aşağıdaki ifadeler karşınıza çıkar:

Ahmet Ertürk 25
Ahmet Ertürk 27 1
Ahmet Ertürk 25
5 10 15 20
Ahmet Ertürk 25 3 

Yukarıdaki PHP dosyasında karakter dizilerini birleştirme işlemcisi (.) kullanılmıştır.

Yukarıdaki PHP dosyasında, toplam beş adet dizi tanımlanmış ve dizilere atanan veriler ekrana yazılmıştır. $arr_deg04 değişkenine aktarılan dizi değerlerinin tamamı sadece değer olarak tanımlandığından dizi indekslemesi 0'dan başlayarak sırasıyla devam etmektedir. $arr_deg05 değişkenine aktarılan dizi değerlerinin bir kısmı değer adı ve değeri birlikte atama bir kısmı ise sadece değer atama yöntemiyle tanımlandığından sadece değer atama yoluyla değer verilen ilk dizi elemanına 0'dan başlayarak indeksleme yapılır ve değer atama yoluyla yapılan her dizi elemanında indeks bir artırılır.

Farklı dizi tanımlamaları


<html>
<body>

<?php
    $arr_deg01 = array ("Adı" => "Ahmet", "Soyadı" => "Ertürk", "Yaşı" => 25);

    $arr_deg02['Adı'] = "Ahmet";
    $arr_deg02['Soyadı'] = "Ertürk";
    $arr_deg02['Yaşı'] = 25;

    echo $arr_deg01["Adı"]." ".$arr_deg01["Soyadı"]." ".$arr_deg01["Yaşı"].'<br/>';

    echo $arr_deg02["Adı"]." ".$arr_deg02["Soyadı"]." ".$arr_deg02["Yaşı"];
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığınızda, web tarayıcınızda aşağıdaki ifadeler karşınıza çıkar:

Ahmet Ertürk 25
Ahmet Ertürk 25 

Yukarıdaki PHP dosyasında, $arr_deg01 değişkenine aktarılan dizi değerlerinin tamamı bir defada atanarak oluşturulmuştur. $arr_deg02 değişkenine aktarılan dizi değerleri ise birer birer atanarak dizi oluşturulmuştur.

Çok boyutlu diziler

Bir diziyi çok boyutlu olarak tanımlayabilirsiniz. Bu durumda her bir dizi elemanı başka bir dizi olarak tanımlanabilir.

$arr_deg = array("bir" => 1, "iki" => array("altbir" => 11, "altiki" => 22), "uc" => 3);

Yukarıdaki tanımlamada turuncu renkle gösterilen dizi başka bir dizinin elemanıdır ve bu diziye erişim aşağıdaki şekilde yapılır:

echo $arr_deg["iki"]["altbir"]; // 11

echo $arr_deg["iki"]["altiki"]; // 22


<html>
<body>

<?php 
    $arr_deg = array("bir" => 1, "iki" => array("altbir" => 11, "altiki" => 22), "uc" => 3);

    echo $arr_deg["iki"]["altbir"]." ".$arr_deg["iki"]["altiki"];
?>

</body>
</html>

Yukarıdaki dosyayı çalıştırdığınızda, web tarayıcınızda aşağıdaki ifadeler karşınıza çıkar:

11 22

Dizileri sıralama

PHP'de bir dizide bulunan elemanları sayısal veya alfabetik olarak azalacak veya artacak şekilde sıralayabiliriz.


<html>
<body>

<?php
    $arr_deg = array(5, 21, 12, 3, 9);
    
    // Diziyi küçükten büyüğe sıralama
    sort($arr_deg);					 
					 
    for ($deg01=0; $deg01<count($arr_deg); $deg01++) {
          echo $arr_deg[$deg01] . " ";
    }	
	
    echo '<br/>';
	
    // Diziyi büyükten küçüğe sıralama
    rsort($arr_deg);					 
					 
    for ($deg01=0; $deg01<count($arr_deg); $deg01++) {
          echo $arr_deg[$deg01] . " ";
    }	
?>

</body>
</html>


Yukarıdaki dosyayı çalıştırdığınızda, web tarayıcınızda aşağıdaki ifadeler karşınıza çıkar:

3 5 9 12 21
21 12 9 5 3

Yukarıdaki PHP dosyasında, beş elemanlı int bir dizi tanımlanmıştır. Program, dizi elemanlarını önce sort() fonksiyonu ile küçükten büyüğe, daha sonra rsort() fonksiyonu ile büyükten küçüğe sıralayarak ekrana yazar.