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 02 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
May 21 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 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获取当月最后一天函数分享
2015/02/02 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
科室工作个人总结的自我评价
2013/10/29 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
家长学校实施方案
2014/03/15 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
2014年组织部工作总结
2014/11/14 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python
golang实现浏览器导出excel文件功能
2022/03/25 Golang