我用它来根据姓氏排序:
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'];
}
但是 - 当姓氏中有重音时,例如Šiko、Áron 等,这些名字在最后。如何对其进行排序,以便重音字符位于非重音字母附近?
strcoll
的函数似乎可以满足您的需求。
更多信息:
编辑:添加了彼得的工作代码,如下
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'];
}
什么先发生?
这是由 Collation 定义的。
PHP 为此提供了 Collator 类:https://www.php.net/manual/en/class.collator.php
示例:
$array = [ 'A', 'a', '文', 'ث' ];
// Brazilian Portuguese
$collator = new Collator('pt_BR');
$collator->asort( $array );
print_r( $array );
退货:
Array
(
[1] => a
[0] => A
[3] => ث
[2] => 文
)
现在有中文校对
new Collator('zh')
:
Array
(
[2] => 文
[1] => a
[0] => A
[3] => ث
)
您可以在这里亲自尝试:https://3v4l.org/0vsBR