2017-03-28 38 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']); 
});