在PHP中,如何根据关键字对关联数组排序
我有一个嵌套的关联数组,如下所示,需要帮助为每个键排序数组,例如“first_name”和“score” 例如:在PHP中,如何根据关键字对关联数组排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个嵌套的关联数组,如下所示,需要帮助为每个键排序数组,例如“first_name”和“score” 例如: Array ( [12345] => Array ( [75] => Array ( [first_name] => Xen [score] => 245 )
Array
(
[12345] => Array
(
[75] => Array
(
[first_name] => Xen
[score] => 245
)
)
[9876] => Array
(
[75] => Array
(
[first_name] => Shane
[score] => 300
)
)
[4567] => Array
(
[75] => Array
(
[first_name] => Dan
[score] => 100
)
)
)
结果应按键按升序排列数组:
Array
(
[first_name] => Array
(
[0] => 4567
[1] => 9876
[2] => 12345
)
[score] => Array
(
[0] => 4567
[1] => 12345
[2] => 9876
)
)
是PHP按键排序的函数。因此,要按数组的键对数组进行排序,请执行以下操作:
ksort($arr);
请注意,ksort
返回一个布尔值(成功或失败),因此您不应该执行$arr=ksort($arr)代码>ksort
修改原始数组
要按键对多维关联数组(例如,关联数组的关联数组)进行递归排序,请尝试ksort
手册页面底部的用户提供的函数(我没有尝试过,但它似乎可以正常工作):
为什么我否决了这个问题:在这个网站上有一些关于如何以任何可以想象的方式对数组进行排序的bajillion q/a。。。花几分钟四处看看。@Orangepill user1971065是您的母亲吗?不,我的母亲是user1723658:-)啊,对不起,容易出错:)谢谢您指出这一点。。将尝试在多个键上使用此选项。这似乎也是一个可能的解决方案。
function deep_ksort(&$arr) {
ksort($arr);
foreach ($arr as &$a) {
if (is_array($a) && !empty($a)) {
deep_ksort($a);
}
}
}