2017-03-28 77 views
2

我有一個多維數組,我按字母順序排序,但問題是,用丹麥特殊字符æøå。它們應按照該順序排序,但不按此順序返回。在php中用特殊字符排序多維數組

這是我的陣列(被去除的部分)

Array 
(
    [0] => Array 
     (
      [Name] => John 
     ) 

    [1] => Array 
     (
      [Name] => Pater 
     ) 

    [2] => Array 
     (
      [Name] => Allan 

     ) 
    [3] => Array 
     (
      [Name] => Ø test 

     ) 
    [4] => Array 
     (
      [Name] => Å test 

     ) 
    [5] => Array 
     (
      [Name] => Æ test 

     ) 
) 

我使用這個功能,對它進行排序

uasort($sorted_region, function($a, $b) { 
    $retval = $a['Name'] <=> $b['Name']; 
    return $retval; 
}); 

任何人都知道,如何對它進行排序,所以我得到æø å按正確順序?

我見過一些使用例如我不確定如何在多維數組中實現這個。

感謝您的幫助! :-)

+0

是對DK現場安裝的? – Qirel

+0

做這個字母,會用英文字母排序嗎? – hassan

回答

1

退房this post

與此解決方案,通過@Sbls在該網頁上的評論鏈接。它將需要修改爲您的字符集,但它應該工作。

function compareASCII($a, $b) { 
    $at = iconv('UTF-8', 'ASCII//TRANSLIT', $a); 
    $bt = iconv('UTF-8', 'ASCII//TRANSLIT', $b); 
    return strcmp($at, $bt); 
} 
uasort($lang, 'compareASCII'); 
+1

1)我不認爲會使用多維數組。 2)請不要複製/粘貼答案,而是重複標記。 – Qirel

+0

會做,致歉。 – digibucc

0

其實這似乎工作

setlocale(LC_ALL, 'da_DK.utf8'); 

usort($sorted_region, function($a, $b) { 
    return strcoll($a['Name'], $b['Name']); 
});