|  在技术加营销的道路上越走越远
温馨提示
我是弹窗内容
当前位置:首页 > PHP经验积累 > PHP二维数组,如何根据某列的值对数组进行排序
PHP二维数组,如何根据某列的值对数组进行排序

PHP二维数组,如何根据某列的值对数组进行排序

日期:2021-06-27 浏览量:1475 原创作者:湖八爷
数组排序是我们编写代码时经常用到的一个知识点,而二维数组排序对于很多初学者来说也是经常遇到的一个知识点。

今天我们这篇文章主要讲一下PHP二维数组排序中遇到最多的一种排序情况,就是根据某字段的值对二维数据进行排序,或者说根据某列的值对数组进行排序。


实际案例,例如我们有一个这样的数组,希望能得到一个直接使用二维数组中day字段排序后的结果,以下为原始数组的数据:


$arr = array(
    0=>array(
        'day'=>'2021-06-21',
        'count'=>'5'
    ),
    1=>array(
        'day'=>'2021-05-10',
        'count'=>'10'
    ),
    2=>array(
        'day'=>'2021-05-13',
        'count'=>'12'
    )
);


我们希望最终得到下面这个排序后的结果:


$arr = array(
    0=>array(
        'day'=>'2021-05-10',
        'count'=>'10'
    ),
    1=>array(
        'day'=>'2021-05-13',
        'count'=>'12'
    ),
    2=>array(
        'day'=>'2021-06-21',
        'count'=>'5'
    )
);


当然,得到相同结果的解决的办法不止一个,比如我们直接使用循环遍历也是可以得到这个相同的结果的。

但是我觉得循环遍历的效率有点低,而且代码量有点多,所以今天我们介绍一下另一种解决方案。

就是先使用array_column()函数得到目标排序字段的一维数组,然后再使用array_multisort()函数结合上面array_column()得到的结果对目标数组进行排序即可得到我们想要的结果。


$date = array_column($arr, 'day');
array_multisort($date, SORT_ASC, $arr);
var_dump($arr);


不过在使用这种方式之前,我们最好先了解一下array_column()函数array_multisort()函数这两个函数的作用。


最后总结一下,因为PHP二维数组排序的元素是按行排列的,我们本次的需求是按其中的一列进行排序。

PHP没有提供类似矩阵转置的函数,所以不能直接使用array_multisort()进行多维排序,只能先把排序的列抽取出来,再作为第一个参数传给array_multisort()函数即可。