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生成静态HTML速度快类库
Mar 18 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
php的hash算法介绍
Feb 13 PHP
PHP CURL获取返回值的方法
May 04 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
PHP云打印类完整示例
Oct 15 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 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基础知识:控制结构
2006/12/13 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
PHP 身份证号验证函数
2009/05/07 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
js获取select标签选中值的两种方式
2014/01/09 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python中扩展包的安装方法详解
2017/06/14 Python
Python实现一个简单的验证码程序
2017/11/03 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
使用K.function()调试keras操作
2020/06/17 Python
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
为什么要有struct关键字
2012/05/08 面试题
本科生详细的自我评价
2013/09/19 职场文书
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
教师个人发展总结
2015/02/11 职场文书
小学运动会宣传稿
2015/07/23 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书