【发布时间】:2023-03-11 17:53:01
【问题描述】:
我曾经有一个包含国家列表的 PHP 数组:
$countries = array(
'AX' => 'Åland Islands',
'AF' => 'Afghanistan',
'GB' => 'United Kingdom'
);
$collator = collator_create('en');
collator_asort($collator, $countries, Collator::SORT_STRING);
显然这个列表对于这个例子来说要短得多,但是这里的排序是有效的。我期待并得到:
- 阿富汗
- 奥兰群岛
- 英国
但是,我需要添加更多数据,并且它变得多维:
$countries = array(
array(
'name' => 'Åland Islands',
'code' => 'AX'
),
array(
'name' => 'Afghanistan',
'code' => 'AF'
),
array(
'name' => 'United Kingdom',
'code' => 'GB'
)
);
usort($countries, function($a, $b){ return $a['name'] <=> $b['name']; });
它对列表中的所有其他国家/地区进行排序,但给了我这个:
- 阿富汗
- 英国
- 奥兰群岛
我一生都无法弄清楚如何正确排序。我意识到在当前状态下没有调用或应用整理器,但是有没有办法让整理器在多维环境中工作?
【问题讨论】:
-
我应该说,在使用字母 Å 的国家,它通常是字母表中的最后一个,就像在挪威这里是字符号。 29. 在排序时,它通常是 A-Å,所以对我来说,在这样的列表底部查找它是很自然的。
标签: php sorting multidimensional-array collation