May 03
Kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $harf = "AaBbCcÇçDdEeFfGgĞğHhIıİiJjKkLlMmNnOoÖöPpRrSsŞşTtUuÜüVvYyZz"; $harfler = str_split($harf,1); function turkcesirala($a,$b) { global $harfler; $ha = array_search(substr($a,0,1),$harfler); $hb = array_search(substr($b,0,1),$harfler); if($ha >= $hb) return true; else return false; } $yazarlar = array("Öküz"=>1,"At"=>2,"Çeşit"=>3,"Zeytin"=>4,"Ğeviş"=>5,"Gev"=>6); uksort($yazarlar,"turkcesirala"); var_export($yazarlar); |
Sonuç:
1 2 3 4 5 6 7 8 | array ( 'At' => 2, 'Çeşit' => 3, 'Gev' => 6, 'Ğeviş' => 5, 'Öküz' => 1, 'Zeytin' => 4, ) |
Güncelleme: Sadece ilk karakterlerin sırasının önemli olduÄŸu bir yerde kullanılmak için yazılmıştır. Ömer ÜÇEL’in belirttiÄŸi ÅŸekilde kullanılırsa tüm karakterler göz önüne alınarak sıralayacaktır.
Kod:
1 2 3 | setlocale(LC_ALL, 'tr_TR.UTF-8'); $yazarlar = array("Öküz"=>1,"At"=>2,"Çeşit"=>3,"Zeytin"=>4,"Ğeviş"=>5,"Gev"=>6); ksort($yazarlar, SORT_LOCALE_STRING); |
04 Mayıs 2010 saat 07:57
Türkçe için doÄŸal olarak sıralama yok mu Php’de? Olsa gerek sanki..
04 Mayıs 2010 saat 08:29
Olması gerektiğinden yanayım fakat neden çalışmadığını araştırmaktansa çalışanı yazmayı tercih ediyorum
04 Mayıs 2010 saat 12:08
Şu şekilde sorun çıkmaz. http://pastebin.com/zTMs0U5K