【发布时间】:2013-12-06 18:46:56
【问题描述】:
我在php中有一个多维数组,我想根据键值对数组进行自然排序。有问题的数组:
array(27) {
["user1"]=>
array(1) {
["link"]=>
string(24) "http://twitch.tv/example"
}
["someotheruser"]=>
array(1) {
["link"]=>
string(24) "http://twitch.tv/example"
}
["anotheruser"]=>
array(1) {
["link"]=>
string(24) "http://twitch.tv/example"
}
// etc...
}
到目前为止,我已经尝试了一些事情,但我没有运气。将uksort 与 natsort 一起使用是行不通的,如果我不需要的话,我不想为自然排序顺序编写自定义比较器。我还尝试单独对键进行排序,但这似乎不起作用
private function knatsort(&$array) {
$keys = array_keys($array);
natsort($keys);
$new_sort = array();
foreach ($keys as $keys_2) {
$new_sort[$keys_2] = $array[$keys_2];
}
$array = $new_sort;
return true;
}
【问题讨论】:
-
定义“似乎不起作用”。顺便说一句,工作得很好for me。
-
@raina77ow 我想我发现了我相当简单的错误,是我把
natsort误认为natcasesort,所以我想我可以换掉它。除此之外,我不知道为什么用array_multisort(array_keys($array), SORT_NATURAL, $array);回答的人删除了它,这是一个很好的答案! -
@AbraCadaver 您只需要按位或不区分大小写。
-
我实际测试过,确实很好用。 )