PHP Array listesini Türkçe uyumlu alfabetik sıralama

PHP ile karakterler üzerinde işlem yapmak istediğinizde, kimi durumlarda Türkçe karakter sıkıntısı çekebilirsiniz. Örneğin tanımlamış olduğunuz dizi değişken içerisinde yer alan ve Türkçe karakter ile başlayan verileri alfabetik olarak sıralamak isterseniz 🙂

Örnek dizi değişken

Bu uygulama için basit bir dizi değişken oluşturalım ve her iki durum için de sıralayalım.

$dizi = array('d','f','c','e','a','ç','b');

Dizi değişkenim yukarıdaki ve şimdi bunu alfabetik olarak sıralamayı deneyelim 🙂

Normal sıralama

Dizi değişkenleri alfabetik olarak sıralamak için bilenen sort fonksiyonu. Bunu uyguluyorum ve elde edeceğimiz listeye bakıyoruz.

$dizi = array('d','f','c','e','a','ç','b');
sort($dizi);
print_r($dizi);

Bu sıralama ile alttaki çıktıyı aldım.

Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => ç )

Sıralama yanlış oldu. ç harfi listenin sonuna gitti 🙂

Türkçe karakter destekli sıralama

Bu kez setlocale fonksiyonu ile Türkçe dil üzerinde çalışacağımı belirtiyorum ve sort fonksiyonuna da bunu dikkate almasını söylüyorum.

setlocale(LC_ALL,'turkish');
$dizi = array('d','f','c','e','a','ç','b');
sort($dizi,SORT_LOCALE_STRING);
print_r($dizi);

Şimdi doğru sıralamayı elde ettim;

Array ( [0] => a [1] => b [2] => c [3] => ç [4] => d [5] => e [6] => f )

Görüldüğü gibi setlocale fonksiyonu içerisinde turkish tanımlaması yaptım. Yani Türkçe karakterler üzerinde işlem yapacağımızı belirttik. Bu değer PHP sürümleri üzerinde farklılık gösterebiliyor. Bu nedenle eğer turkish tanımlaması sizde çalışmazsa bunun yerine sırasıyla,

  • tr
  • TR
  • tr_TR
  • turkey

denemelerini yapabilirsiniz.