前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP的多维数组排序

PHP的多维数组排序

作者头像
用户2475223
发布2019-12-17 16:03:55
3.6K0
发布2019-12-17 16:03:55
举报
文章被收录于专栏:codersamcodersam

熟悉PHP的小伙伴都知道有很多内置函数可以对数组进行排序操作或者自定义一些排序方法(冒泡)等等。

PHP排序函数

代码语言:javascript
复制
sort() 函数用于对数组单元升序排序。
rsort() 函数用于对数组单元降序排序。
asort() 函数用于对数组单元升序排序并保持索引关系。
arsort() 函数用于对数组单元降序排序并保持索引关系。
ksort() 函数用于对数组单元按照键名升序排序。
krsort() 函数用于对数组单元按照键名降序排序。

以上函数都针对的是一维数组的排序。

二维数组排序函数

array_multisort()函数可以对多个数组或多维数组进行排序,或者根据某一维或多维对多维数组进行排序。

array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] ) : bool

多维数组排序

假设有一个二维数组

代码语言:javascript
复制
$sortArr = [
['id' => 12, 'money' => 99],
['id' => 1, 'money' => 98],
['id' => 5, 'money' => 94]
];

根据id进行升序排序

代码语言:javascript
复制
// 获取数组中id值
$ids = array_column($sortArr, 'id');
// 第一个参数就是需要排序key的值,传入后相当于先对 $ids 进行排序,然后根据排序后的$ids的key重新构建需要排序的$sortArr
array_multisort($ids, SORT_ASC, $sortArr);
print_r($sortArr);

输出结果

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [id] => 1
            [money] => 98
        )

    [1] => Array
        (
            [id] => 5
            [money] => 94
        )

    [2] => Array
        (
            [id] => 12
            [money] => 99
        )

)

多维数组多个key值排序

使用上一个例子的数组,并且多增加一个排序key。

代码语言:javascript
复制
$sortArr = [
    ['id' => 12, 'money' => 99, 'sort' => 0],
    ['id' => 1, 'money' => 98, 'sort' => 0],
    ['id' => 5, 'money' => 94, 'sort' => 1]
];

先通过排序字段进行降序,再通过金额进行降序

代码语言:javascript
复制
$moneys = array_column($sortArr, 'money');
$sorts = array_column($sortArr, 'sort');
array_multisort($sorts, SORT_DESC, $moneys, SORT_DESC, $sortArr);
print_r($sortArr);

输出结果

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [id] => 5
            [money] => 94
            [sort] => 1
        )

    [1] => Array
        (
            [id] => 12
            [money] => 99
            [sort] => 0
        )

    [2] => Array
        (
            [id] => 1
            [money] => 98
            [sort] => 0
        )

)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年6月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP排序函数
  • 二维数组排序函数
  • 多维数组排序
  • 多维数组多个key值排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档