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
php之字符串变相相减的代码
Mar 19 PHP
真正的ZIP文件操作类(php)
Jul 21 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
Nov 07 PHP
PHP多例模式介绍
Jun 24 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
php中error与exception的区别及应用
Jul 28 PHP
php输出xml属性的方法
Mar 19 PHP
php简单实现多语言切换的方法
May 09 PHP
详解PHP编码转换函数应用技巧
Oct 22 PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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
mysql+php分页类(已测)
2008/03/31 PHP
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
html读出文本文件内容
2007/01/22 Javascript
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
Python实现的数据结构与算法之队列详解
2015/04/22 Python
python 全文检索引擎详解
2017/04/25 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
爱情保证书大全
2014/04/29 职场文书
春季防火方案
2014/05/10 职场文书
事业单位考察材料范文
2014/12/25 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP
SQL SERVER中的流程控制语句
2022/05/25 SQL Server