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
PHP中的正规表达式(一)
Oct 09 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
PHP使用feof()函数读文件的方法
Nov 07 PHP
php控制文件下载速度的方法
Mar 24 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
用文本文件制作留言板提示(下)
2006/10/09 PHP
php类
2006/11/27 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
nodejs基础应用
2017/02/03 NodeJs
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
python实现学生信息管理系统
2020/04/05 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
numpy数组广播的机制
2019/07/12 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
基于Django实现日志记录报错信息
2019/12/17 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
快餐店的创业计划书范文
2014/01/29 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
二手房购房意向书
2015/05/09 职场文书
讲座新闻稿
2015/07/18 职场文书