php二维数组排序方法(array_multisort usort)


Posted in PHP onDecember 25, 2013

例如像下面的数组:

$users = array(
    array('name' => 'tom', 'age' => 20)
    , array('name' => 'anny', 'age' => 18)
    , array('name' => 'jack', 'age' => 22)
);

希望能按照age从小到大进行排序。笔者整理了两个方法出来,分享给大家。

1、使用array_multisort

使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下:

$ages = array();
foreach ($users as $user) {
    $ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);

执行后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用:

array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

2、使用usort

使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列:

usort($users, function($a, $b) {
            $al = strlen($a['name']);
            $bl = strlen($b['name']);
            if ($al == $bl)
                return 0;
            return ($al > $bl) ? -1 : 1;
        });

这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,并计算长度,而后比较长度就可以了。

笔者更喜欢第二种方法,因为少了提取排序内容到一维数组的步骤,而且排序方法更为灵活。

PHP 相关文章推荐
如何对PHP程序中的常见漏洞进行攻击
Oct 09 PHP
function.inc.php超越php
Dec 09 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 PHP
php array_intersect()函数使用代码
Jan 14 PHP
UCenter Home二次开发指南
May 28 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 #PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 #PHP
php对数组排序的简单实例
Dec 25 #PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 #PHP
php中apc缓存使用示例
Dec 25 #PHP
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 #PHP
输入值/表单提交参数过滤有效防止sql注入的方法
Dec 25 #PHP
You might like
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
2019/10/18 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
不同Jquery版本引发的问题解决
2013/10/14 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
vue组件name的作用小结
2018/05/23 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
Python生成器(Generator)详解
2015/04/13 Python
python中map、any、all函数用法分析
2015/04/21 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
Python Subprocess模块原理及实例
2019/08/26 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
网页设计个人找工作求职信
2013/11/28 职场文书
后勤工作职责
2013/12/22 职场文书
档案检查欢迎词
2014/01/13 职场文书
带薪年假请假条
2014/02/04 职场文书
冬季安全检查方案
2014/05/23 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
2014年租房协议书范本
2014/10/30 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
如何用python插入独创性声明
2021/03/31 Python
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL