Navigate / search

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