PHP ile Array içindeki Türkçe Kelimeleri Alfabetik Olarak Sıralama

Bir çok kez karşıma çıkan ve projelerimde kullandığım Türkçe kelimeleri alfabetik olarak sıralama fonksiyonunu bulmuştum. Bunu sizinle paylaşmak istedim.

function turkce_sirala($a, $b) {
    $turkce = array('ç' => 'c', 'ğ' => 'g', 'ı' => 'i', 'ö' => 'o',
    'ş' => 's', 'ü' => 'u', 'Ç' => 'C', 'Ğ' => 'G',
    'İ' => 'I', 'Ö' => 'O', 'Ş' => 'S', 'Ü' => 'U');

    $a = preg_replace("/(ı|ğ|ü|ş|ö|ç|Ğ|Ü|Ş|İ|Ö|Ç)/e", "\$turkce['\\1'].'~'", $a);
    $b = preg_replace("/(ı|ğ|ü|ş|ö|ç|Ğ|Ü|Ş|İ|Ö|Ç)/e", "\$turkce['\\1'].'~'", $b);

    if ($a == $b)
      return 0;

      return ($a < $b) ? -1 : 1;
}

Bu fonksiyonu şu şekilde olan bir arraya uygular isek

$array = array('ahmet', 'mehmet', 'şahin', 'çetin', 'cenk', 'ziya');

usort($array, "turkce_sirala");
print_r($array);

Sonuç olarak çıktımız

Array ( [0] => ahmet [1] => cenk [2] => çetin [3] => mehmet [4] => şahin [5] => ziya )

olacaktır. Yararlı olması dileğiyle.

Yazar: ibrahim YAPICI (9 Posts)

Takım ruhuna önem veren, hızlı ve pratik çözümler arayan ve tüm yeniliklere açık birisi


5 Comments

  1. İbrahim Bey ben bu kodları kategorilerimde alfabetik sıralamaya uygulayamadım.

    Yardımcı olabilirmisiniz.
    kategoriler:
    1-id
    2-kategori

    Reply
    • Merhabalar Nevzat Bey,

      Kategorileri bir array içine atıp oradan sıralamayı tekrar deneyebilirsiniz.

      Yardımcı olmamı isterseniz bana kategori listenizi ve kodlarınızı gönderebilirseniz, oradan daha hızlı cevap verebilirim.

      Reply
      • Kodlar bunlar:
        ‘c’, ‘ğ’ => ‘g’, ‘ı’ => ‘i’, ‘ö’ => ‘o’,
        ‘ş’ => ‘s’, ‘ü’ => ‘u’, ‘Ç’ => ‘C’, ‘Ğ’ => ‘G’,
        ‘İ’ => ‘I’, ‘Ö’ => ‘O’, ‘Ş’ => ‘S’, ‘Ü’ => ‘U’);

        $a = preg_replace(“/(ı|ğ|ü|ş|ö|ç|Ğ|Ü|Ş|İ|Ö|Ç)/e”, “\$turkce[‘\\1’].’~'”, $a);
        $b = preg_replace(“/(ı|ğ|ü|ş|ö|ç|Ğ|Ü|Ş|İ|Ö|Ç)/e”, “\$turkce[‘\\1’].’~'”, $b);

        if ($a == $b)
        return 0;

        return ($a

        Reply
  2. $sorgu1 = mysql_query(“select * from firmakat order by kategori asc”);
    while($gelen1 = mysql_fetch_array($sorgu1)){
    usort($sorgu1, “turkce_sirala”);

    İlk kotlar çıkmadı sadece burasında hata yapıyorum

    Reply
    • $yeniarray = array();
      while($gelen1 = mysql_fetch_array($sorgu1)){
      $yeniarray[]=$gelen1[‘kategori’];
      }
      yaptıktan sonra
      usort($yeniarray, “turkce_sirala”);
      print_r($yeniarray);

      olarak deneyebilirsiniz. Sorun çözülmez ise bana telden ulaşabilirsiniz.

      Reply

Leave a Comment.