php之二维数组排序问题
发布:smiling 来源: PHP粉丝网 添加日期:2023-07-02 10:06:48 浏览: 评论:0
这篇文章主要介绍了php之二维数组排序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教。
php二维数组排序
测试数据
- $arr = [
- 'a' => ['a' => 11, 'b' => 12, 'c' => 13],
- 'b' => ['a' => 10, 'b' => 13, 'c' => 12],
- 'c' => ['a' => 12, 'b' => 11, 'c' => 10],
- ];
通过usort排序
- # usort 排序会导致二维数组的key改变(key a,b,c 变成 0,1,2 这种)
- # 如果不在意key的改变可以用这种
- # $arr 是引用
- usort($arr, function ($current, $next) {
- # 正序排
- return $current['a'] > $next['a'];
- });
通过array_multisort排序
- $arr = [
- 'a' => ['a' => 11, 'b' => 12, 'c' => 13],
- 'b' => ['a' => 10, 'b' => 13, 'c' => 12],
- 'c' => ['a' => 12, 'b' => 11, 'c' => 10],
- ];
- # 以二维数组的a作为比较值
- $key = array_column(array_values($arr), 'a');
- # 第一个参数需要提供二维数组排序依据
- # 第二个排序方式 SORT_ASC:正序 SORT_DESC:倒序
- # 第三个参数 要排序的二维数组,改动直接操作在该数组上
- # 排序能保证key不改变
- array_multisort($key, SORT_ASC, $arr);
php二维数组排序算法函数
- <?php
- // 二维数组排序算法函数,能够具有通用性,可以调用php内置函数。
- function array_sort(&$arr, $order = []){
- $result = [];
- if (emptyempty($arr)) {
- return $result;
- }
- uasort($arr, function ($a, $b) use ($order) {
- foreach ($order as $key => $sort) {
- array_shift($order);
- if ($a[$key] == $b[$key]) {
- continue;
- }
- if ($sort === 'DESC') {
- return ($a[$key] > $b[$key]) ? -1 : 1;
- } else {
- return ($a[$key] > $b[$key]) ? 1 : -1;
- }
- }
- return 0;
- });
- foreach ($arr as $value) {
- $result[] = $value;
- }
- return $arr = $result;
- }
- // 测试
- $ps = array(
- array('id' => 1, 'name' => 'zhangcan', 'age' => 13),
- array('id' => 2, 'name' => 'lisi', 'age' => 16),
- array('id' => 3, 'name' => 'wangwu', 'age' => 17),
- array('id' => 4, 'name' => 'wangwu', 'age' => 18),
- );
- // $ret = array_sort($person, ['name' => 'ASC']);
- $ret = array_sort($ps, ['name'=>'ASC', 'age'=>'DESC']);
- print_r($ret);
Tags: php二维数组排序
相关文章
- ·php二维数组排序后获取最大值(2014-07-14)
- ·PHP二维数组排序问题详解(数组键值排序)(2014-07-15)
- ·php二维数组排序与遍历(2014-09-19)
- ·怎么用PHP实现二维数组按照键值排序(2020-03-30)
- ·php二维数组排序详解(2020-05-16)
- ·php对二维数组按指定键值key排序示例代码(2020-07-06)
- ·php对二维数组进行排序的简单实例(2020-08-11)
- ·一个PHP二维数组排序的函数分享(2020-08-27)
- ·PHP二维数组排序的3种方法和自定义函数分享(2020-11-08)
- ·php实例分享之二维数组排序(2020-12-25)
- ·php中二维数组排序问题方法详解(2021-06-16)
- ·php对二维数组进行相关操作(排序、转换、去空白等)(2021-06-25)
- ·PHP按指定键值对二维数组进行排序的方法(2021-06-30)
- ·PHP二维数组排序简单实现方法(2021-07-09)
- ·php自定义二维数组排序函数array_orderby用法示例(2021-09-05)
- ·PHP 二维数组排序保持键名不变的方法(2022-07-23)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)