Dizi değişkenden ayrıntılı söz edebilmek için önce
tipik bir dizi-değişkende neler olduğuna bakalım. Sözgelimi, verdiğiniz "PHP ile
Programlama" kursundaki öğrencilerinizin listesi şöyle olabilir:
| Öğrenci No |
Adı Soyadı |
Sınav-1 |
Sınav-2 |
Not |
| 1 |
Özbay Altun |
.. |
.. |
.. |
| 2 |
Muharrem Taç |
.. |
.. |
.. |
| 3 |
Erhan Mataracı |
.. |
.. |
.. |
| 4 |
Hasan Civelek |
.. |
.. |
.. |
Dizi değişken oluşturalım
Şimdi, PHP bize öyle bir araç vermeli ki, biz bir
kerede bu listenin tümünü, her bir ögesine sanki bir değişkenin değeri imiş gibi
tek-tek, veya bir kaçına birden ulaşabilmeli ve arzu ettiğimiz zaman notları
doldurabilmeliyiz. Öğrenciler de yapacağımız Web sitesine girerek, kendi
notlarını görebilmeli ve notlarını inceleyebilmeli. PHP'nin bu amaçla sağladığı
araç, çok-boyutlu dizi-değişken oluşturma aracıdır. Ve bu araçla yukarıdaki
listeyi aynen şöyle yapabiliriz. Bu kodu dizi_degiskenler01.php adıyla kaydedin:
<HTML>
<HEAD>
<TITLE>PHP'de Degiskenler</TITLE>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<B>
<H2>
<?php
$ogrenciler = array (
array ( adi => "Özbay", soyadi => "Altun", sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Muharrem", soyadi => "Taç", sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Hasan", soyadi => "Civelek", sinav1 =>"", sinav2 =>"", not =>""),
array ( adi => "Şahika", soyadi => "Tabak", sinav1 =>"", sinav2 =>"", not =>""),
);
// Buraya başka kodlar girecek
print $ogrenciler[0][adi];
?>
</H2>
</B>
</BODY>
</HTML>
Programdaki "print()" komutunu sadece dizi
değişkeni doğru yazıp yazmadığımızı sınamak amacıyla yazdık; bu programı
Browser'da açtığınızda yazdığınız ilk ismi Browser penceresinde görüyorsanız,
dizi-değişkeni doğru şekilde oluşturdunuz demektir. Burada, array() komutnu
yazarken, süslü parantez değil, normal parantez kullandığımıza ve herbir
elemanın değerlerinin sonunda vrigül olduğuna dikkat edir. Bir diğer önemli
nokta: endeks adları bir kelimeden fazla ise bunları tırnak içine alarak
belirtmektir. Örneğin:
array ( adi => "Özbay", soyadi => "Altun", "Sinav 1 Notları" =>"",
"Sinav 2 Notları" =>"", "Toplam Not Ortalamasi" =>""), Burada, daha öncekilere benzer bir şekilde
adlandırılmış $ogrenciler değişkenin içeriğini array() komutu ile doldurduğumuzu
görüyoruz. Array() ile böyle çok boyutlu ve içerdiği değerlerin her birinin bir
"endeks adı" olan dizi-değişkene İlişkili Dizi (Associative array) de denir.
Perl bilenler ise bu tür değişkenlere "Hash" dendiğini hatırlayacaklardır.
İlişkili Dizi'lerin birinci satırı 0, ikinci satırı 1, üçüncü satırı 2.. diye
numaralandırılır. Bu dizinin o satırındaki kaydın sıra endeksidir. Ayrıca burada
"adi," "soyadi," "sinav1" .. dizi değişkenin içindeki değerlerin endeks adıdır.
Yani bu değerlere atıfta bulunurken, referans yaparken veya bu
değerleriekullanmak amacıyla erişirken sıra endeksi ve endeks adıyla
hitabederiz. Yukarıdaki sınama amaçlı print() komutuna bakarsanız, birinci
öğrencinin ismini "[0][adi]" olarak çağırıyor. Çok elemanlı ilişkili dizi oluşturmanın bir diğer
yolu, yeri geldiğinde böyle bir dizi için yeni bir üye ilgili bilgileri eleman
endeksi ve değerler için endeks adı belirterek şöyle bir kod yazmaktan
ibarettir. dizi_degiskenler01.php dosyasında şu değişikliği yaparak,
dizi_degiskenler02.php adıyla kaydedin
<?php
$ogrenciler[0][adi] = "Özbay";
$ogrenciler[0][soyadi] = "Altun";
$ogrenciler[0][sinav1] = "";
$ogrenciler[0][sinav2] = "";
$ogrenciler[0][not] = "";
// Buraya Buraya başka kodlar girecek
print $ogrenciler[0][adi];
?> Bir dizi değişkende kaç boyut olacaksa, o kadar
içiçe array() ögesi oluşturabiliriz. Buna göre tek boyutlu bir dizi değişken
sadece bir array() komutu ile ve sadece değerler verilerek oluşturulabilir.
Diyelim ki yukarıdaki öğrenci listemiz sadece öğrencilerin isimlerinden
oluşacak. Bu durumda $ogrenciler değişkenine ilişkin satırı şöyle yazabilirdik:
$ogrenciler = array ("Özbay", "Muharrem", "Hasan", "Şahika"); PHP, böyle tek boyutlu bir dizinin örneğin birinci
elemanını, "$ogrenciler[0]" adıyla bilir. Böyle bir tek-boyutlu diziyi
oluşturmak için PHP bize başka bir kolaylık da sağlar: array() komutunu
kullanmadan, doğruca dizinin ögelerine değer vermemiz mümkündür. Yukarıdaki
programın sadece PHP bölümünü şöyle değiştirerek, dizi_degiskenler03.php adıyla
kaydedin:
<?php
$ogrenciler[] = "Özbay";
$ogrenciler[] = "Muharrem";
$ogrenciler[] = "Hasan";
$ogrenciler[] = "Şahika";
// Buraya başka kodlar girecek
print $ogrenciler[0];
?> Böyle sırayla dizi değişken oluşturur veya
oluşturulmuş bir dizi değişkene ek yaparken, değişkenin sıra numarasını
yazmazsak, PHP bunları kendisi sıralar. Yukarıdaki kodun da Browser penceresine
"Özbay" yazdırması gerekir. Mevcut tek-boyutlu bir dizi değişkene ek
yaptığımızda, yeni değerin dizinin en altına eklenmesini istiyorsak, sıra
numarası yazmamıza gerek yoktur. Mevcut değerlerden birini değiştirmek
istiyorsak, o değerin sıra numarasını yazmamız gerekir. Bunu denemek için
yukarıdaki kodu şöyle değiştirilim ve dizi_degiskenler04.php adıyla kaydedelim:
<?php
$ogrenciler[] = "Özbay";
$ogrenciler[] = "Muharrem";
$ogrenciler[] = "Hasan";
$ogrenciler[] = "Şahika";
// Buraya başka kodlar girecek
$ogrenciler[0] = "Emre";
$ogrenciler[15] = "Özbay";
print ("Dizideki 1'nci isim: $ogrenciler[0] <br>");
print ("Dizideki 2'nci isim: $ogrenciler[1] <br>");
print ("Dizideki 3'ünci isim: $ogrenciler[2] <br>");
print ("Dizideki 4'üncü isim: $ogrenciler[3] <br>");
print ("Dizideki 5'inci isim: $ogrenciler[4] <br>");
print ("Dizideki 6'ncı isim: $ogrenciler[5] <br>");
print ("..............<br>");
print ("Dizideki 15'nci isim: $ogrenciler[15] <br>");
?>Bu programın Browser penceresine göndereceği
sırada, birinci öğrenci ($ogrenci[0]) olarak bu kez Özbay değil Emre yazdığını
göreceğiz. Bunun sebebi, diziyi oluşturan ilk grup deyimden
sonra,
$ogrenciler[0] = "Emre";
satırı ile birinci elemanın değerini değiştirmiş
olduk. 15'nci elemana atama yapmakla, PHP'nin $ogrenciler dizisinde 6, 7, 8,
9,.. 14'e kadar boş elemanlar oluşturmasına sebep olduk. Tek boyutlu dizileri de İlişkili Dizi olarak
oluşturabilir yani değerlere endeks adı verebiliriz. Daha önce kaydettiğimiz
dosyada şu değişikliği yapalım ve dizi_degiskenler05.php adıyla kaydedelim:
<?php
$ogrenci[adi] = "Özbay";
$ogrenci[soyadi] = "Altun";
$ogrenci[sinav1] = "";
$ogrenci[sinav2] = "";
$ogrenci[not] = "";
// Buraya başka kodlar girecek
print $ogrenci[adi];
?> PHP, $ogrenci adlı değişkenin beş ayrı değeri
olduğunu ve bunların "adi," "soyadi," "sinav1"... olduğunu biliyor. Şimdi artık
istediğimiz noktada bu değişkenin istediğimiz değerine, o değerin endeks adını
yazarak, çağrıda bulunabiliriz; bu değeri yeniden verebiliriz.
Dizi değişkenleri kullanalım
Yukarıdaki paragrafta "..değişkenin istediğimiz
değerine, o değerin endeks adını yazarak, çağrıda bulunabiliriz.." dediğimizi
görmüş olmalısınız. Dizi veya tekil, değişkenleri oluşturmamızın sebebi,
tuttukları değerleri programımızın gereği olan şekilde ve yerde kullanmaktır.
Sadece bir değer tutan değişkenleri örneğin print() komutu ile sık sık
kullandık. Yukarıda dizi değişken örneklerinde de bazı değişkenleri ve
değerlerini çağırdık. Ancak dizi değişkenlerin değerlerinden yararlanabilmek
için başka araçlar da vardır. Herşeyden önce dizi değişkenlerin büyüklüğü,
boyutu bizim için önem taşıyabilir. Özellikle bir veritabanı dosyasını okutarak
oluşturacağımız dizi değişkenin kaç elemanı ve her bir elemanın kaç ögesi
bulunduğunu bilmemiz gerekebilir. Bir dizi değişkenin kaç elemanı bulunduğu, o
değişkenin count() özelliği sorgulanarak öğrenilir. count(), dizideki eleman
sayısını verir. Şimdi bunu bir örnekle görelim. Daha önce kaydettiğimiz
dizi_degiskenler04.php dosyasını açın ve PHP bölümünde şu değişikliği yaparak
dizi_degiskenler06.php adıyla kaydedin:
<?php
$ogrenciler[] = "Özbay";
$ogrenciler[] = "Muharrem";
$ogrenciler[] = "Hasan";
$ogrenciler[] = "Şahika";
// Buraya başka kodlar girecek
print ("\$ogrenciler adlı dizide ". count($ogrenciler) ." adet eleman var.");
?> Bu program Browser penceresine dizimizde 4 eleman
bulunduğunu bildirecektir. Şimdi işleri biraz karmaşık hale getirelim!
Yukarıdaki kodun, print() satırının yerine şu satırları ekleyerek,
dizi_degiskenler06a.php adıyla kaydelim.
print ("\$ogrenciler adlı dizide ". count($ogrenciler) ." adet eleman var.");
print ("<br><br>");
for ($sayac=1 ; $sayac <= count($ogrenciler) ; $sayac++ )
{
print ("\$ogrenciler dizisinin ". $sayac ."'ncı elemanı: " . $ogrenciler[$sayac] ."<br>");
} Bu programı çalıştırmadan önce, eklediğimiz
satırları irdeleyelim. İlk print() komutunun Browser penceresine "yazdıracağı"
metinde geçen ters bölü işaretini hatırlıyor olmalısınız. Bu, tek veya çift
tırnak içine de almış bile olsak, PHP'nin, bir değişken adını gördüğü zaman onun
yerine o değişkenin tuttuğu değeri yazması sebebiyle, $ işareti gibi PHP için
özel anlamı olan işaretlerin anlamlandırılmasını önlemek için yaptığımız ve
adına o karakteri kurtarma veya ESCaping dediğimiz işlemdir. Bu işlemle, PHP'nin
anlamlı işaret değil de metin saymasını istediğimiz karakterlerin önüne ters
bölü işareti koyarız: ‘\’ gibi. Buradaki örnekte, bu sayede PHP "$ogrenciler"
kelimesini değişken adı olarak değil, düz metin olarak görüyor. Ki, aynı komutta
aynı kelimeyi tekrar kullandığımızda bu kez değişken adı olarak kullanıyoruz ve
bu değişkenin count() ögesinin değerini öğreniyoruz. $ogrenci değişkenin
"Özbay," "Muharrem," "Hasan" ve "Şahika" değerleri bulunduğuna göre, bu
değişkenin count()'u 4 olacaktır. ("Ozbay" = 0, .. "Şahika" = 3 olmak üzere..)
Bu print() komutu, Browser penceresine tahmin ettiğiniz gibi "$ogrenciler adlı
dizide 4 adet eleman var." yazdıracaktır. İkinci print() satırı ise ekrana
ardarda iki yeni satır işareti gönderecektir. Şimdi karışık noktaya geliyoruz! Burada bir for
döngüsü başlıyor. Önce döngünün kaç kez tekrar edeceğini belirleyecek olan
değişkeni tanımlıyoruz: $sayac. Sonra bu sayacın kaça kadar çıkacağını
belirliyoruz. Bu sayıyı, bize yine count() veriyor. Ve tabiî for döngüsünün
devam edebilmesi için gerekli son unsur olan, sayacın arttırılmasını sağlayan
deyim var. Programımız bu döngünün içinde, yani dört kez, her seferinde dizinin
bir elemanın adını Browser penceresine gönderiyor. Şimdi, hatırlayacaksınız,
dizi değişkenlerin elemanlarının bir sıra sayısı vardı. Örneğin "Şahika" değeri,
dizinin 3 numaralı, yani dördüncü elemanı; ve bu elemanın değerini ekrana
göndermek için şu komutu vermemiz yeterli:
print ($ogrenciler[4]);
Programda ise buradaki endeks sayısını, $sayac
değişkeninin o andaki değerinden alıyoruz. Döngünün her seferinde bu değer bir
artacağı için bize $ogrenciler değişkeninin o anda hangi elemanının değeri
çağırmak istiyorsak, o elemanın endeksini vermiş olacaktır. Ve sonuç olarak
programımız, dizideki bütün değerleri Browser'a gönderecektir. Kimi zaman buradaki örnekte olduğu gibi, dizinin
bütün elemanlarını bir for döngüsüyle değil, foreach döngüsüyle bulmak daha
kolay olabilir. Kısaca belirtmek gerekirse, foreach döngüsü, bir dizi değişkenin
bütün elemanları için, arzu ettiğiniz işi yapar. foreach döngüsünü yazarken
komutun kaç kere icra edileceğini bir sayaçla tutmak gerekmez; çünkü döngü, ona
adını verdiğiniz değişkenin içindeki bütün değerler bitinceye kadar devam
edecektir. Yukarıdaki örnekteki bütün print() ve for satırlarını atarak yerine
şunları yazıp ve dizi_degiskenler06b.php adıyla kaydelim.
foreach ($ogrenciler as $ogrenci)
{
print ("$ogrenci<br>");
} foreach döngüsü, bir dizi değişkenin adını içinden
değer çekilecek kaynak olarak ister; bunu "as" (olarak) kelimesi izler; sonra
diziden alınacak her bir değeri geçici olarak tutacak değişkenin adı verilir.
Buradaki print() komutumuz, bu geçici değişkenin tuttuğu değeri Browser'a
gönöderecektir. Bu değer ise döngünün her adımında dizi değişkendeki bir değer
yani öğrencilerin listesi olacaktır. Dizi elemanlarının farklı özelliklerine ilişkin
değerlere endeks adı verdiğimiz ilişkili dizilerde ise eleman değerlerini
çağırmak foreach döngüsünün biraz farklı yazılmasını gerektirir. Perl'e aşina
alanların bu dizi türüne "hash" dendiğini hatırlayacaklardır. PHP'de de Perl'ün
hash türü değişkenlerinde olduğu gibi, endeks adlarına "anahtar" (key), bu
endeksin belirlediği değere ise değer (value) denir. İlişkili dizilerden değer
almak üzere foreach döngüsü yazılırken, değerin anahtarını ve değerin kendisini
iki geçici değişkene yazmamız gerekir. Daha önce yazdığımız
dizi_degiskenler05.php adlı dosyayı açarak mevcut tek satırlık print() kodunun
yerine şunları yazın ve dizi_degiskenler07.php adıyla kaydedin:
foreach ($ogrenciler as $anahtar=>$deger)
{
print ("$anahtar = $deger<br>");
} Bu kodu çalıştırmadan önce foreach döngüsü
üzerinde kısaca duralım: döngü, $ogrenciler dizisini okumaya başladığında
içinde, benzetme yerinde ise, iki sütun, ve bir çok satırlar bulacaktır. Bu
sütunlardan birincisi, ikinci sütundaki verinin adıdır; foreach, birinci
sütundaki veriyi alarak $anahtar adlı geçici değişkenin değeri olarak atayacak;
sonra ikinci sütuna geçecek ve bunu alarak $deger adlı geçici değişkenin değeri
yapacaktır. Döngü, daha sonra print() komutunu icra edecektir. print() ise ve
geçici $anahtar değişkeninin değerini, ardından eşittir işaretini ve son olarak
da geçici $deger değişkeninin değerini Browser'a gönderecektir. print()
komutunun icrası bitince, foreach, kendisine verdiğimiz $ogrenciler değişkeninde
anahtar-değer çiftini ele almadığı satır kalıp kalmadığına bakacak, ve
elemanların tümü bitinceye kadar bu işlemi tekrar edecektir. Tabiî, sonuç
anahtar ve değerlerin altalta sıralanması olacaktır. Bir de bu bölümün en başında ele aldığımız çok
elemanlı ilişkili diziler vardı. Onların içindeki değerleri acaba nasıl alabilir
ve kullanabiliriz? Tabiî yine bir döngü ile. Fakat bu kez, döngü-içinde-döngü
kullanmak zorundayız. Böyle bir diziyi gözümüzde canlandırırsak, belki neden iki
döngüye ihtiyaç olduğununu daha iyi görebiliriz. Gözümüzün önüne bir tablo
getirelim: dizinin her bir elemanı bizim öğrenimimizdeki öğrenciler bir satırda
yer almış olsun; sütunlar olarak da bu elemana ait değerler yer alıyor. Sütun
başlığı ise, bu değerin endeksi olan anahtar! Şimdi bu bölümün başında
yazdığımız dizi_degiskenler0i.php adlı dosyayı açalım tek satırlık print()
komutunun yerine şu satırları yazarak dizi_degiskenler08.php adıyla kaydedelim:
foreach ( $ogrenciler as $ogrenci )
{
foreach ( $ogrenci as $anahtar => $deger )
{
print ("$anahtar = $deger <br> ");
}
print ("<br>");
} Kısaca irdelersek, bu kodda foreach döngüsünün
önce çok-boyutlu değişkenimizin bir satırını içindeki bütün anahtar+değer
çeftleri ile ele alıp, tümünü $ogrenci adlı değişkene geçici olarak
yerleştirdiğini görüyoruz. Bu foreach döngüsünün ilk işi yeni bir foreach
döngüsü başlatmak oluyor. Yeni foreach ise sazı eline alır almaz, önce, kendisi
çok ögeli bir değişken olan (çünkü içinde bir öğrenciye ait, tüm değişkenler ve
onların endeks adları var) $ogrenci değişkeninin içindeki anahtar ve değer
çiftlerini tek-tek, $anahtar ve $deger değişkenlerine yerleştiriyor; sonra
print() komutu ile, aralarına eşittir işareti koyarak bu değişkenlerin
değerlerini Browser penceresine gönderiyor. Bu döngü biter bitmez, ilk foreach
yaptıracağı işlere kaldığı yerden devam ediyor; ve ekrana bir yeni satır komutu
gönderierek, başa dönüyor; bu kez çok boyutlu dizi değişkenin yeni bir elemana
geçiyor. Taa ki, dizinin bütün elemanları ve elemanların bütün ögeleri bitinceye
kadar. Bu noktada bir uyarı: Gerçek programda bir dizinin
elemanlarına ilk ulaştığımızda, elemanın içinde değer bulunup bulunmadığını
anlamak yerinde olur. Bunu is_array() fonksiyonu ile yapabiliriz. Bu fonksiyon,
dizinin içinde değer varsa, True/Doğru, yoksa False/Yanlış karşılığını
verecektir. Buradaki örnekte, ilk foreach satırından hemen sonra:
is_array( $ogrenci )
satırını koyarak, dizinin o anda okunan elemanın
içinde değer bulunup bulunmadığını anlayabiliriz.
Dizi Değişkenlerin Düzenlenmesi
Dizi değişkenlerin daha verimli şekilde
kullanılması için PHP bize bir takım araçlar sağlar. Bunlarla dizi değişkenleri
birleştirebiliriz; içinden kesit alabiliriz, sıralayabiliriz veya bazı
elemanlarını silebiliriz. Şimdi kısaca bu işlemleri ele alalım:
Dizileri birleştirme: array_merge()
İki veya daha fazla dizinin bütün elemanlarını
birleştirerek, ortaya yeni bir dizi çıkartır. Örnek:
$birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika" );
$ikinci_dizi = array ( "Altun" , "Taç" , "Civelek" , "Tabak" );
$yeni_dizi = array_merge ( $birinci_dizi, $ikinci_dizi );
Bu kod ile oluşturulan $yeni_dizi isimli dizi
değişkenin hangi elemanlara sahip olduğunu, şöyle bir kodla görebilirsiniz:
foreach ( $yeni_dizi as $yeni_eleman )
{
print (" $yeni_eleman <br>");
} İkinci dizinin bütün elemanları, birinci dizinin
elemanlarının arkasına eklenmiş olmalı. array_merge() işlemi, çok-boyutlu
ilişkili dizilere de uygulanabilir; PHP iki dizideki uyumlu-uyumsuz, yani
birinde olan diğerinde olmayan bütün anahtar+değer çiftlerini yeni dizide de
oluştur. (array_merge() işleminden sonra birleştirilen dizilerin değişmeden
kaldığına dikkat edin.)
Dizilere değişken ekleme: array_push()
Bir diziye yeni değişkenler eklemek için,
array_push() fonksiyonuna mevcut dizinin adını ve yeni değerleri yazarız. Örnek:
$birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika" );
$yeni = array_push ($birinci_dizi, "Altun" , "Taç" , "Civelek" , "Tabak" );
Burada $yeni adlı değişken sadece $birinci_dizi
adlı dizinin yeni eleman sayısını tutar. array_push(), kendisine adını
verdiğimiz dizinin içeriğini değiştirir. Yukarıdaki örnekte içine yeni değerler
yazılan dizinin elemanlarını görüntülemek için şöyle bir kod yazabiliriz:
print ("\$birinci_dizi adlı dizide $yeni_dizi adet değişken var<br>");
foreach ( $birinci_dizi as $ogrenci )
{
print ("$ogrenci <br> ");
}
Dizinin ilk elemanını silme: array_shift()
Bir dizi-değişkenin ilk elemanını tümüyle silmek
için array_shift() fonksiyonunu kullanırız. Bu fonksiyona sadece birinci elemanı
silinecek dizinin adını vermek yeter. Örnek:
$birinci_dizi = array("Özbay","Muharrem","Hasan","Şahika");
$silinen = array_shift($birinci_dizi);array_shift(), adını verdiğiniz dizinin içeriğini
değiştirir; buradaki örnekte, $silinen adlı değişken dizinin silinen birinci
elemanın değerini tutar.
Diziden kesit alma: array_slice()
Bir dizi-değişkenin bütün elemanları yerine bir
kesitini kullanmak istiyorsak, bunu array_slice() fonksiyonu ile yapabiliriz. Bu
fonksiyona kesit alınacak dizinin adı, kesitin başladığı yer ve kaç adet
değişken alınacağı argüman olarak verilir. Örnek :
$birinci_dizi=array("Özbay","Muharrem","Hasan","Şahika","Altun","Taç","Civelek","Tabak");
$kesit=array_slice($birinci_dizi,3,4); Burada, PHP'ye $kesit adlı yeni dizi değişkene,
$birinci_dizi adlı dizinin 3'ncü değerinden itibaren (3 dahil) dört değeri
yerleştirmesini bildiriyoruz. array_slice(), adını verdiğimiz değişkenin
içeriğine dokunmaz; yeni dizi değişken oluşturulur.
Dizileri sıralama: sort() ve rsort()
Bir dizinin içindeki değerleri alfabetik veya
küçükten büyüğe doğru sıralamak için sort() fonksiyonunu kullanırız. Örnek:
$birinci_dizi=array("Özbay","Muharrem","Hasan","Şahika","Altun","Taç","Civelek","Tabak");
sort($birinci_dizi); PHP, dizideki bütün değerleri A'dan Z'ye sıraya
sokacaktır. sort() fonksiyonu dizinin içeğini değiştirir. Bir diziyi Z'den A'ya
veya büyükten küçüğe doğru sıralamak için de rsort() fonksiyonunu
kullanabilirsiniz. (PHP4.0 Türkçe karakterleri tanımıyor.) Bir noktada dikkatli
olmak gerekir: bu fonksiyonu ilişkili (değerlerin anahtarı olarak endeks adı
bulunan) dizide kullanırsanız, PHP, anahtar değerlerini (endeks adlarını) atar,
yerine 0'dan itibaren rakam koyar. Bunu önlemek için, ilişkili dizileri asort()
veya ksort() fonksiyonu ile sıralamak gerekir.
İlişkili dizileri sıralama: asort() ve ksort()
İlişkili dizilerin diğer dizi değişkenlere göre
farkı, değerlerinin bir de adı bulunmasıdır. Değerlerin adlarına anahtar denir.
Bir ilişkili diziyi değerlerine göre sıralamak için asort() fonksiyonu
kullanılır. Örnek:
$birinci_dizi=array(ogr_01=>"Özbay",ogr_02=>"Muharrem",ogr_013>"Hasan",ogr_04=>"Şahika");
asort($birinci_dizi);
PHP, bu diziyi değerler itibariyle alfabetik
sıraya sokacaktır. Eğer sıranın değere göre değil de değerlerin anahtarına
(burada ogr_01, ogr_02 olan kelimeler) göre yapılmasını istiyorsak, ksort()
fonksiyonunu kullanırız. Örnek:
$birinci_dizi = array(ogr_01=>"Özbay",ogr_02=>"Muharrem",ogr_013>"Hasan",ogr_04=>"Şahika");
ksort($birinci_dizi);
PHP, bu diziyi anahtarlara göre alfabetik sıraya
sokacaktır.