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.

Published by

ibrahim YAPICI

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

5 thoughts on “PHP ile Array içindeki Türkçe Kelimeleri Alfabetik Olarak Sıralama”

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

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

    1. 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.

      1. 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

  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

    1. $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.

Leave a Reply

Your email address will not be published. Required fields are marked *