在PHP中,我将值作为数组的键进行了强调。我想按键排序,但Collator对象似乎没有这个选项,而是销毁了键。
<?php
$arr = ['Brasil' => 3, 'África do Sul' => 5];
$collator = new Collator('pt_BR');
$collator->sort($arr);
var_dump($arr);
$arr = ['Brasil' => 3, 'África do Sul' => 5];
$collator->asort($arr);
var_dump($arr);
$arr = ['Brasil' => 3, 'África do Sul' => 5];
$collator->sortWithSortKeys($arr);
var_dump($arr);
?>
字符串
这将显示:
array(2) {
[0]=>int(3)
[1]=>int(5)
}
array(2) {
["Brasil"]=>int(3)
["África do Sul"]=>int(5)
}
array(2) {
[0]=>int(3)
[1]=>int(5)
}
型
我如何才能实现我想要的排序下面?
array(2) {
["África do Sul"]=>int(5)
["Brasil"]=>int(3)
}
型
1条答案
按热度按时间oyxsuwqo1#
新建议:
使用
uksort()
并将Collator
类的compare
方法作为回调传递。产品编号:(Demo)
字符串
老建议:
我以前从未使用过这个类,但我相信这是一个简单的误解the PHP manual的问题。老实说,我也被方法名称所欺骗。它不按键排序-正如你在手册中的演示中看到的那样,值是排序的。
因为你的键(根据定义)是唯一的,你可以安全地调用
array_keys()
来创建一个临时索引数组,其中原始键现在是值。然后将原始数据Map到排序数组。产品编号:(Demo)
型
或(Demo)
型
输出量:
型