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 相关文章推荐
屏蔽浏览器缓存另类方法
Oct 09 PHP
E路文章系统PHP
Dec 11 PHP
php基础知识:类与对象(5) static
Dec 13 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
PHP验证码生成原理和实现
Jan 24 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
PHP实现添加购物车功能
Mar 06 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 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 VS ASP
2006/10/09 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
php中的一些数组排序方法分享
2012/07/20 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
PHP中的替代语法介绍
2015/01/09 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
jquery easyui使用心得
2014/07/07 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
python装饰器实例大详解
2017/10/25 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
python队列原理及实现方法示例
2019/11/27 Python
python 实现生成均匀分布的点
2019/12/05 Python
在python image 中实现安装中文字体
2020/05/16 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
zooplus意大利:在线宠物商店
2019/08/07 全球购物
自荐书范文
2013/12/08 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
先进教师个人总结
2015/02/11 职场文书
班主任工作总结范文
2015/08/13 职场文书