v2.5.2
Giriş yap

acil yardım... php, array, sort, turkish problem

srknaltnz
1,353 defa görüntülendi

arkadaşlar, 3 gündür uğraşmama rağmen, türkçe olarak diziyi sıralayamıyorum. setlocale denedim, öyle sort ettim olmadı. Yardımlarınız için şimdiden teşekkürler.

<?php

$alfabe = array('a', 'b', 'c', 'ç', 'd', 'e', 'f', 'g', 'ğ', 'h', 'ı', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'ö', 'p', 'r', 's', 'ş', 't', 'u', 'ü', 'v', 'y', 'z');

setlocale(LC_ALL, "tr_TR");
sort($alfabe, SORT_LOCALE_STRING);

print_r($alfabe);

/* Çıktısı

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
    [6] => g
    [7] => h
    [8] => i
    [9] => j
    [10] => k
    [11] => l
    [12] => m
    [13] => n
    [14] => o
    [15] => p
    [16] => r
    [17] => s
    [18] => t
    [19] => u
    [20] => v
    [21] => y
    [22] => z
    [23] => ç
    [24] => ö
    [25] => ü
    [26] => ğ
    [27] => ı
    [28] => ş
)

*/

?>
Cevap yaz
Cevaplar (3)
defatul
1452 gün önce

Şu şekilde hazırlarsan sayfanı hiç bir problem yaşamazsın

setlocale( LC_ALL, [ 'tr_TR.UTF-8', 'tr_TR', 'tr', 'turkish' ] );
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => ç
    [4] => d
    [5] => e
    [6] => f
    [7] => g
    [8] => ğ
    [9] => h
    [10] => ı
    [11] => i
    [12] => j
    [13] => k
    [14] => l
    [15] => m
    [16] => n
    [17] => o
    [18] => ö
    [19] => p
    [20] => r
    [21] => s
    [22] => ş
    [23] => t
    [24] => u
    [25] => ü
    [26] => v
    [27] => y
    [28] => z
)
[ 'en_US.UTF-8', 'en_US', 'en', 'english' ]
[ 'fr_FR.UTF-8', 'fr_FR', 'fr', 'french' ]
[ 'de_DE.UTF-8', 'de_DE', 'de', 'germany' ]
0kan87
1452 gün önce
function customSort($a, $b) {
    static $charOrder = array('a', 'b', 'c', 'ç', 'd', 'e', 'f', 'g', 'ğ', 'h', 'ı', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'ö', 'p', 'r', 's', 'ş','t', 'u', 'ü', 'v', 'y', 'z');

    $a = mb_strtolower($a);
    $b = mb_strtolower($b);

    for($i=0;$i<mb_strlen($a) && $i<mb_strlen($b);$i++) {
        $chA = mb_substr($a, $i, 1);
        $chB = mb_substr($b, $i, 1);
        $valA = array_search($chA, $charOrder);
        $valB = array_search($chB, $charOrder);
        if($valA == $valB) continue;
        if($valA > $valB) return 1;
        return -1;
    }

    if(mb_strlen($a) == mb_strlen($b)) return 0;
    if(mb_strlen($a) > mb_strlen($b))  return -1;
    return 1;

}
$array = array('ceyhan','şanlıurfa','özkan','ismail','adana');
usort($array, 'customSort');

print_r($array);

//ÇIKTI
//Array ( [0] => adana [1] => ceyhan [2] => ismail [3] => özkan [4] => şanlıurfa )
makifgokce
1452 gün önce
header('Content-Type: text/html; charset=utf-8');
setlocale(LC_ALL, 'tr');
$alfabe = array('a', 'b', 'c', 'ç', 'd', 'e', 'f', 'g', 'ğ', 'h', 'ı', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'ö', 'p', 'r', 's', 'ş', 't', 'u', 'ü', 'v', 'y', 'z');
$collator = new Collator('tr_TR');
$collator->sort($alfabe);
var_dump($alfabe);
/*
 array (size=29)
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'c' (length=1)
  3 => string 'ç' (length=2)
  4 => string 'd' (length=1)
  5 => string 'e' (length=1)
  6 => string 'f' (length=1)
  7 => string 'g' (length=1)
  8 => string 'ğ' (length=2)
  9 => string 'h' (length=1)
  10 => string 'ı' (length=2)
  11 => string 'i' (length=1)
  12 => string 'j' (length=1)
  13 => string 'k' (length=1)
  14 => string 'l' (length=1)
  15 => string 'm' (length=1)
  16 => string 'n' (length=1)
  17 => string 'o' (length=1)
  18 => string 'ö' (length=2)
  19 => string 'p' (length=1)
  20 => string 'r' (length=1)
  21 => string 's' (length=1)
  22 => string 'ş' (length=2)
  23 => string 't' (length=1)
  24 => string 'u' (length=1)
  25 => string 'ü' (length=2)
  26 => string 'v' (length=1)
  27 => string 'y' (length=1)
  28 => string 'z' (length=1)
 */