Navigate / search

ksort() – krsort() ile Dizi Anahtarlarına Göre Sıralama

sort(),rsort(),asort(),arsort() ve natsort() ile dizi değerlerini sıralamayı öğrenmiştik.Şimdide dizi değerlerini değil dizi anahtarlarını sıralamayı göreceğiz.Anahtara göre sıralamak için ksort() ve krsort fonksiyonlarını kullanacağız.
Anahtarlı bir dizi oluşturalım ve yazdıralım.

1
2
3
4
$telefon=array("Nokia"=>335,"Sony"=>250,"Samsung"=>200,"LG"=>180,"General Mobile"=>150);
foreach ($telefon as $marka=>$fiyat){
	echo "$marka = $fiyat<br>";
	}

Telefon marka ve fiyatlraı ekrana şu şekilde gelecektir.

Nokia = 335
Sony = 250
Samsung = 200
LG = 180
General Mobile = 150

Anahtara göre sıralamak istersek.Foreach ile döngüye başlamadan önce ksort($telefon); komutunu kullanmamız gerekiyor.

1
2
3
4
5
$telefon=array("Nokia"=>335,"Sony"=>250,"Samsung"=>200,"LG"=>180,"General Mobile"=>150);
ksort($telefon);
foreach ($telefon as $marka=>$fiyat){
	echo "$marka = $fiyat<br>";
	}

Ksort ile sıraladıktan sonra telefon listemiz şöyle sıralanacaktır.

General Mobile = 150
LG = 180
Nokia = 335
Samsung = 200
Sony = 250

Eğer sıralamayı tersten yapmak istersek krsort() fonksiyonunu kullanmamız gerekecektir.

natsort() ile Dizilerde sıralama(Doğal Sayı Sıralaması)

Dizi sıralamalarıyla ilgili olarak sort rsort asort ve arsort fonksiyonlarını görmüştük.Şimdide natsort() fonksiyonunu ele alacağız.Natsort() fonksiyonu sort() ile aynı görevi yapar fakat işin içine sayısal değerler girdiğinde sort() fonksiyonu sayılarıda alfabetik sistemdeki gibi sıralamak ister.Natsort() fonksiyonu ise sıralamayı sayısal değerlere göre yapar.Şimdi elimizde bi dosya listesi var.Hadi bunları hem sort() hemde natsort() ile sıralayalım.

Kitap1.xls
Kitap23.xls
Kitap6.xls
Kitap10.xls
Kitap62.xls

Bu dosya listesini aşağıdaki gibi sort ile sıralarsak;

1
2
3
4
5
$dosyalar=array("Kitap1.xls","Kitap23.xls","Kitap6.xls","Kitap10.xls","Kitap62.xls");
sort($dosyalar);
foreach ($dosyalar as $dosyaadi){
	echo $dosyaadi."<br>";
	}

Sıralama şöyle olacaktır.

Kitap1.xls
Kitap10.xls
Kitap23.xls
Kitap6.xls
Kitap62.xls

Şimdide sıralamamızı natsort() fonksiyonuyla yapalaım bakalım sıralamamız nasıl değişecek.

1
2
3
4
5
$dosyalar=array("Kitap1.xls","Kitap23.xls","Kitap6.xls","Kitap10.xls","Kitap62.xls");
natsort($dosyalar);
foreach ($dosyalar as $dosyaadi){
	echo $dosyaadi."<br>";
	}

Ve sıralama böyle gözükecek.

Kitap1.xls
Kitap6.xls
Kitap10.xls
Kitap23.xls
Kitap62.xls

Sıralama farklılıklarına lütfen inceleyiniz ;)

Php Dizileri Sıralama asort() – arsort()

Not: Sort ve rsort ile sıralama yaparken.Değişken anahtarlarının sayısal değerleri değişir ve sıralamaya göre ilk değere 0 dan başlayarak yukarı doğru yeni anahtar isimlerini verir.

Bir önceki dersimizi bu not ile bitirmiştikŞimdiki asort() ve arsort() fonksiyonlarımızda dizi değerlerinin sıralaması değişse bile ilk olarak dizide aldığı anahtarı muhafaza eder.Sıralama ilk yazdırılsa bile önceki değerinin yazdırır.Şimdi hemen bir örnekle deneyelim.(Sizde deneyerek yapın lütfen ;) ).
İlk önce dizimizi oluşturuyoruz. ilk önce anahtarlarıyla birlikte dizi elemanlarını yazdırıyoruz.Hemen sonra sort ile sıralama yapıp dizimizi anahtarlarıyla birlikte yazdırıyoruz.

1
2
3
4
5
6
7
8
9
$isimler=array("suat","esma","hulya","mehmet","ali","sinan");
foreach ($isimler as $anahtar=>$isim){
	echo "$anahtar.$isim <br>";
}
echo "---------------------------------";
sort($isimler);
foreach ($isimler as $anahtar=>$isim){
	echo "$anahtar.$isim <br>";
}

Sonuç aşağıdaki gibi olacaktır.

0.suat
1.esma
2.hulya
3.mehmet
4.ali
5.sinan
---------------------------------
0.ali
1.esma
2.hulya
3.mehmet
4.sinan
5.suat

Bu kodlamada sort yerine asort kullansaydık dizi anahtarları ilk elemandan 0 ‘dan başlayıp devam etmiyecek.İlk halindeki dizi anahtarları yani indislerini muhafaza edecekler.Böyle ;

0.suat
1.esma
2.hulya
3.mehmet
4.ali
5.sinan
---------------------------------
4.ali
1.esma
2.hulya
3.mehmet
5.sinan
0.suat

Harf sıralaması tersten başa doğru yapmak istersek de komutu böyle kullanıyoruz.

1
arsort($isimler);

sort() – rsort() Php Dizilerinde Sıralama (Harfe Göre)

Şimdide dizi değerleri için veya anahtarları içinde sıralamalara göz gezdireceğiz.Sıralama işlemi harf sırasına göre gider.
İlk olarak sort() komutunu göreceğiz.Şimdi bir dizi oluşturalım kendimize.İçindeki değerleri harf sırası açısından karışık bir şekilde kaydedelim

1
2
3
4
$isimler=array("suat","esma","hulya","mehmet","ali","sinan");
foreach ($isimler as $isim){
	echo "$isim <br>";
}

Ekranda gördüğümüz isimleri kaydettiğimiz sırayla yazdırdık.Şimdi sort() fonksiyonu ile sıralamayı harf sırasına göre yapmak istersek sort($isimler); diye bir satır eklememiz gerekiyor.

1
2
3
4
5
$isimler=array("suat","esma","hulya","mehmet","ali","sinan");
sort($isimler);
foreach ($isimler as $isim){
	echo "$isim <br>";
	}

Ve böylece$ isimler değişkenini yazdırdığımızda sıralama harf sırasına göre olacaktır.Peki ya harf sıralamasını tersten başlatmak istersek ne olacak.Yine bu programındaki diziye örnek olarak;

1
rsort($isimler);

olarak yazmalıyız.
Not: Sort ve rsort ile sıralama yaparken.Değişken anahtarlarının sayısal değerleri değişir ve sıralamaya göre ilk değere 0 dan başlayarak yukarı doğru yeni anahtar isimlerini verir

Array_slice Fonksiyonu ile Dizileri Ayırma

Daha önce array_marge komutu ile dizilerimiz birleştirmeyi görmüştük.Array merge ile farklı dizileri tek dizi içine atmıştık.Şimdi ise bu işin tam tersini yani dizileri bölmeyi veya dizinin istediğimiz kısmını almayı göreceğiz.Bunu Array_slice() fonksiyonu ile yapacağız.
Array_slice() komutunu kullanırken parantez içinde kalan kısıma ilk önce dizi değişkeninin adını sonra bir virgül koyup diziyi kaçıncı elemandan itibaren böleceğimizi ve son olarakta bir virgül koyup bölmeye başladığımız elemandan itibaren toplam kaçtane eleman alacağımızı yazarız.
ÖRNEK KULLANIM:$dizi adlı değişkenin 3 nolu elemanından başlayıp 4 adet eleman al ve $degisken adlı değişkene kaydet diyeceğiz.

$degisken=array_silce($dizi,3,4);

Unutmamanız gereken bir nokta var hangi elemandan başlanacağını yazarken dizi elemanlarının “0″‘dan başladığını unutmayalım.Şimdi bir kod bloğu içinde gösterelim.
$ogrenciler adında bir dizimiz var ve biz bu dizide aslı ebru ayhan ve esrayı almak istiyoruz.Yani 0′dan saymaya başladığımızda bölmeye başlayacağımız eleman 3 nolu aslı oluyor.Aslı dahil toplam 4 eleman almak istiyorsak kodlarımız şu şekilde olacaktır.

1
2
3
4
5
$ogrenciler=array("Ali","Mehmet","Vural","Aslı","Ebru","Ayhan","Esra","Selma","Nurcan");
$secilenler=array_slice($ogrenciler,3,4);
foreach ($secilenler as $ogrenciadi){
     echo "$ogrenciadi<br>";
}

$secilenler adlı değişkenin içeriği Aslı,Ebru,Ayhan ve Esra olarak değişecektir.