PHP的二维数组排序

我们在开发过程中,经常会遇到给数组排序,熟悉PHP的朋友都知道sort、rsort、ksort、krsort等等这些常用的数组排序函数,但是这些函数都是给一维数组排序的,PHP有没有给二维数组或者多维数组排序的函数呢?

答案是有的,array_multisort这个函数就是用来给多维数组排序的。

例如:

$students = array(
    array('id' => 1, 'name' => 'Tom'),
    array('id' => 5, 'name' => 'Tim'),
    array('id' => 2, 'name' => 'Tony'),
    array('id' => 4, 'name' => 'Jhon'),
    array('id' => 3, 'name' => 'Ted')
);

通过id给学生排序

$ids = array_column($students, 'id');

正序

array_multisort($ids, SORT_ASC, $students);

倒序

array_multisort($ids, SORT_DESC, $students);

这样就很方便的给二维数组排序了,多维数组排序的道理一样,可以参考PHP的官方文档

PHP的数组排序函数:
array_multisort — 对多个数组或多维数组进行排序
arsort — 对数组进行逆向排序并保持索引关系
asort — 对数组进行排序并保持索引关系
krsort — 对数组按照键名逆向排序
ksort — 对数组按照键名排序
natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序
natsort — 用“自然排序”算法对数组排序
rsort — 对数组逆向排序
sort — 对数组排序
uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort — 使用用户自定义的比较函数对数组中的键名进行排序
usort — 使用用户自定义的比较函数对数组中的值进行排序

发表评论

电子邮件地址不会被公开。 必填项已用*标注