带有重音符号的php数组排序

带有重音符号的php数组排序,php,arrays,sorting,Php,Arrays,Sorting,我使用此选项根据姓氏进行排序: usort($fb_friends['data'], "custom_sort"); function custom_sort($a,$b) { return $a['last_name']>$b['last_name']; } foreach($fb_friends['data'] as $friend) { echo '<br>'; echo $friend['name'];

我使用此选项根据姓氏进行排序:

  usort($fb_friends['data'], "custom_sort");          
  function custom_sort($a,$b) { 
    return $a['last_name']>$b['last_name'];
  }

  foreach($fb_friends['data'] as $friend) { 
    echo '<br>'; 
    echo $friend['name']; 
  } 
usort($fb_friends['data'],“custom_sort”);
函数自定义排序($a,$b){
返回$a['last_name']>$b['last_name'];
}
foreach($fb_friends['data']作为$friend){
回声“
”; echo$friend['name']; }

但是-当姓氏是重音时,例如西科、Á伦等,这些名字在末尾。如何正确排序?

使用多字节字符串函数。有一个名为的函数似乎适合您的需要

更多信息:


编辑:在下面添加了Peter的工作代码

setlocale(LC_COLLATE, 'sk_SK.utf8');

usort($fb_friends['data'], 'custom_sort');

function custom_sort($a, $b) {
    return strcoll ($a['last_name'], $b['last_name']);
}

foreach ($fb_friends['data'] as $friend) {
    echo '<br>';
    echo $friend['name'];
}
setlocale(LC_-COLLATE,'sk_-sk.utf8');
usort($fb_friends['data'],'custom_sort');
函数自定义排序($a,$b){
返回strcoll($a['last\u name'],$b['last\u name']);
}
foreach($fb_friends['data']作为$friend){
回声“
”; echo$friend['name']; }
什么先到

  • A
  • a
  • ث
这是由排序规则定义的

PHP有用于此的Collator类:

例如:

$array=['A','A','文', 'ث' ];
//巴西葡萄牙语
$collator=新的collator('pt_BR');
$collator->asort($array);
打印(数组);
返回:

Array
(
    [1] => a
    [0] => A
    [3] => ث
    [2] => 文
)
现在使用中文排序规则
新的Collator('zh')


您可以在这里亲自尝试:

谢谢!这对我很有用:setlocale(LC_COLLATE,'sk_sk.utf8');usort($fb_friends['data'],“custom_sort”);函数custom_sort($a,$b){return strcoll($a['last_name'],$b['last_name']);}foreach($fb_friends['data']as$friend){echo'
';echo$friend['name'];}如果字符串是多列数组的一部分,我们想在多列上排序呢?这太棒了,看起来最干净,也谢谢
Array
(
    [2] => 文
    [1] => a
    [0] => A
    [3] => ث
)