Diziler

22 Mayıs 2008 Perşembe

Php'de diziler, skaler değişkenlerin gruplanarak saklandıkları,bir anahtar ve bir değer çiftinde oluşan değişkenlerdir. Dizi içerisinde saklanan değerlere eleman, bu elemana erişim için kullanılan ilişkili indexine de anahtar deriz. Dizilerin sıfır yada bir'den başlayan sayısal indexleri vardır ve PHP birleşik dizileri de destekler ve dizi anahtarları sayısal veya string tipi verilerden oluşabilir. Php'de diziler print veya echo gibi birer fonksiyon olmayıp bir php yapısıdır.

Diziler; array(); biçiminde tanımlanırlar, ve içlerinde köşeli parantezlerle ayrılmış anahtar ve bun işaret eden veri tipleri bulunur:

array([anahtar =>] değer, [anahtar =>] değer, ...)

Faydaları:
Diziler ortak skaler değişkenleri gruplamamızı sağlar,
Dizileri kullanmakla bir bilgi grubunu, tek bir birim olarak hareket ettirebiliriz.

Sayısal indexli diziler;

Bu yapıda anahtar opsiyonel olmakla birlikte, dizi tanımlaması yapılırken php tarafından otomatik olarak (0) sıfırdan başlayarak artan değerler atanır(elle bir değer de verebilirsiniz).

array(1, 2, 3) yazmakla dizimizi array( 0 => 1, 1 => 2, 2 => 3) olarak ifade etmiş oluruz.
Bir diziyi bir diziye basitçe = (atama) operatörünü kullanarak kopyalayabiliriz.

<?php
$sayilar = array(1, 2, 3);
$veriler = array("sorento", "mazda", "ford");
$sayilar = $veriler; // Veriler dizimizi, sayılar dizimize kopyalıyoruz.
print_r ($sayilar); // Çıktımız; Array ( [0] => sorento [1] => mazda [2] => ford ) olacaktır.
?>

Eğer küçükten büyüğe bir sayı grubuna sahip dizi yaratmak istiyorsanız range() fonksiyonu ile bunu basitçe yapabiliriz.

$sayilar = range(1, 10);
print_r ($sayilar); // Burada dizimizi print_r fonksiyonumuzla ekrana bastırıyoruz.
/* Çıktımız :
* Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 )
* Olarak yansıyacaktır.
*/

Dizi İçeriklerine erişim;

Bir dizi değişkenin içeriğine erişmek için, dizi değişkeni ve ilgili anahtarını veya indexini yazmamız yeterlidir. İndex köşeli parantezlerin içine dizi değişkenin adından hemen sonra yerleşir.

dizimiz $dizimiz = array("Mazda", "Ford", "Kia"); Olsun. Eğer Kia verisine ulaşmak istiyorsak; $dizimiz[2]; yazmamız yeterlidir. Yukarıda da anlattığım gibi dizilerin sayısal indexleri 0'dan başlar ve bizim dizimizdede dizinin ilk elemanı olan Mazda burada, indexi 0(sıfır) olan değerimizdir.
Diğer değişkenlerde olduğu gibi dizi değişkenlerinin elemanlarıda = (atama) operatörü kullanılarak değiştirelebilir.

$dizimiz[2] = "Toyota"; // Dizimizin Kia olan elamanını, Toyota olarak değiştirdik. Eğer dizimize yeni bir eleman eklemek istersek basitçe bir sonraki indekse yeni bir eleman atamakla bu işlemi yaparız.

$dizimiz[3] = "Opel"; // Artık dizimizde 4 eleman var.

Eğer dizi içeriğini tarayıcıya yansıtmak istiyorsak;

echo "$dizimiz[0] $dizimiz[1] $dizimiz[2] $dizimiz[3]"; Yazmamız yeterlidir.

Diğer Php Değişkenleri gibi, dizilerede önceden ilk değer verilmesi ya da önceden dizilerin yaratılması gerekmez. Diziler kullanmaya başladığımız anda otomatik olarak yaratılmış olurlar.

$dizimiz[0] = "Mazda";
$dizimiz[1] = "Toyota";
$dizimiz[2] = "Ford";
$dizimiz[3] = "Opel";

İşte size dört elamana sahip basit bir dizi. Eğer dizimiz adlı dizi değişkenimiz yoksa, ilk satırda dizimize Mazda değerini atamamızla birlikte otomatik olarak yaratılmış olur. Ardından gelen diğer verilerde otomatik olarak dizimize eklenirler.

Birleşik diziler;

Birleşik dizilerde dizi içerisinde yuvalanmış veriler bulunur. Aşağıdaki dizi değişkenimize bakalım.

$dizi_1 = array("isim" => "Mehmet", "Yas" => 30);
$dizi_2["isim"] = "Mehmet";
$dizi_2["Yas"] = 30;
if($dizi_1 == $dizi_2) {
print '$dizi_1 ve $dizi_2 benzerdir'; // Çıktımız
$dizi_1 ve $dizi_2 benzerdir olur.
}

Yukarıdaki kod parçamızda isim'in anahtar, Mehmet' in değer olduğu bir birleşik dizi yarattık. Birleşik bir dizide her bir değerle istediğimiz bir anahtar ya da indeksi ilişkilendirebiliriz.

Dizi değişkenlerindeki anahtarları kullanarakta verilere erişebiliriz.

$dizi_1 = array("isim" => "Mehmet", "Yas" => 30);
$dizi_2["isim"] = "Mehmet";
$dizi_2["Yas"] = 30;
print $dizi_2["isim"];
if ($dizi_2["yas"] <>Mehmet olgunluk yolunda ilerliyor" olacaktır.

Çok boyutlu diziler;

Dizilerimizin basit birer anahtar => değer çiftleri olmaları gerekmez. Dizideki her konumbaşka bir diziyi de barındırabilir. Böylece iki boyutlu bir dizi yaratmış oluruz. İki boyutlu bir dizi eni ve boyu olan bir matris veya satırları ve sütunları olan bir tablo gibi düşünülebilir.

$dizimiz = array(1 => array("isim" => "Mehmet", "yas" => 30), array("isim"=> "Orhan", "yas" => 27));
print $dizimiz[1]["yas"]; // Çıktımız 30 olacaktır.

Dizi içeriğine erişmek için döngülerden faydalanmak;

Dizi değişkenlerde değişken içeriklerine erişmek için farklı yollar vardır. Genellikle bir dizinin içeriğine erişmek için foreach döngüsünden yararlanılır. Foreach döngüsünün yapısı aşağıdaki gibidir:

foreach($dizimiz as [$anahtar =>] [&] değer);

Aşağıdaki örneğimizi inceleyelim.

$dizimiz = array("Mazda", "Toyota", "Opel", "Kia");
print "Araçlar : \n";
foreach ($dizimiz as $anahtar => $deger) {
print "#$anahtar = $deger \n";
}
// Çıktımız: Araçlar : #0 = Mazda #1 = Toyota #2 = Opel #3 = Kia gibi olacaktır.

Bir diğer kullanışlı yöntem ise list ve each yapısını kullanmaktır. Kendisi bir fonksiyon olan each(), bir dizideki geçerli elemanı döndürür ve yeni elemanı geçerli eleman yapar. Bu fonksiyonu bir while döngüsü içerisinde kullandığımızda, dizideki her elemanı sırayla döndürür.

$yaslar = array("Orhan" => 25, "Meral" => 23);
reset($yaslar);
$kisi = each($yaslar);
print "Kisi :";
print $kisi["key"];
print "Yaşı :";
print $kisi["value"];

Diğer fonksiyonumuz olan list(), fonksiyonuda, diziyi belirli sayıdaki değerlere bölmek için kullanılmaktadır ve elde edilen değişkenlere isim vermemizi sağlar. Yapısı aşağıdaki gibidir.

list($degisken1, $degisken2, ...) = $dizimiz;

ilk değişkenimiz olan $degisken1, dizimizdeki ilk pozisyon olan sıfır konumundaki değişkendir. İterasyona devam edildikçe, dizi içerisindeki pozisyon 1, 2, ve dizi sonuna kadar yer alan değişkenleri sırasıyla kullanımımıza sunar.

$degisken1 = $dizimiz[0];
$degisken2 = $dizimiz[1];

each() fonksiyonunu kullanırken dikkat edilecek bir nokta vardır. Aynı kod içerisinde fonksiyonu iki kez kullanmak istiyorsak, geçerli elemanı reset() fonksiyonu kullanarakdizinin başlangıcına ayarlamak gerekmektedir.

$kisiler = array("Mehmet", "Orhan", "Semih", "Meral");
reset($kisiler);
while (list($anahtar, $deger) = each($kisiler)) {
print "#$anahtar = $deger\n";
}
// Çıktımız : #0 = Mehmet #1 = Orhan #2 = Semih #3 = Meral olacaktır.

Dizilerde sıralama işlemleri;

Dizi içerisindeki verileri sıralamak çoğu zaman oldukça faydalıdır.

sort(); Fonksiyonunu kullanmak;

sort() fonksiyonu, kendisine geçirilen dizi içerisindeki elemanları alfabetik ya da sayısal olarak küçükten büyüğe doğru sıralar. Sıralama başarılı ise true, değilse false değer döndürür.

$kisiler= array("Meral", "Orhan", "Semih", "Halil");
sort($kisiler);
foreach($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}

sort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.sort.php ziyaret ediniz.

asort(); ve ksort() Fonksiyonlarını kullanmak;

Genellikle birleşik dizilerde kullanılırlar. asort() fonksiyonu her elemanı değerine göre sıralar. İşlem başarılı olduğunda true, başarısız olduğunda false değeri döndürür.

$kisiler= array("Meral" => 35, "Orhan" => 30, "semih" => 27, "Halil" => 40);
asort($kisiler);
foreach($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}
// Çıktısı
#semih = 27#Orhan = 30#Meral = 35#Halil = 40

Örneğmizde kişilerin yaşlarının küçükten büyüğe doğru sıralandığını gözlemleyebilirsiniz.

asort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.asort.php ziyaret ediniz.

Eğer dizi içeriğindeki elemanları değerine göre değilde anahtara göre sıralamak isteseydik, bunun için ksort() fonksiyonunu kullanmaya gerek duyardık. Bu foknksiyonumuzda başarılı olup olamama durumuna göre booolean bir değer gönderir. Bu değer başarılı ise true, başarısız ise false olacaktır.
Yukarıdaki örneğimizi ksort() fonksiyonumuzu kulanarak yineleyelim.

$kisiler= array("Meral" => 35, "Orhan" => 30, "semih" => 27, "Halil" => 40);
ksort($kisiler);
foreach ($kisiler as $anahtar => $deger) {
print "#$anahtar = $deger";
}
// Çıktımız alfabetik olarak sıralanarak #Halil = 40#Meral = 35#Orhan = 30#semih = 27 olarak tarayıcımıza yansıdı.

ksort() Fonksiyonunun prototipi ve örnek uygulamaları için php manual linkini: http://tr2.php.net/manual/en/function.ksort.php ziyaret ediniz.

Gönderen _nl2br zaman: 22:52  

0 yorum:

Yorum Gönder