php usort 使用用户自定义的比较函数对二维数组中的值进行排序


Posted in PHP onMay 02, 2017

今天发现一个很好用二维数组排序的php方法,usort,推荐给大家,以后二维数组里面,要按照一个字段的值排序用这个方法简单高效,例如下面的数组:

[guess_subject] => Array
    (
      [0] => Array
        (
          [subject_id] => 4587
          [game_id] => 9228
          [parent_category_id] => 78
          [subject_title] => 全场比赛两队总得分之和是
          [subject_date_time] => 1490668200
          [status] => 2
          [subject_answer] => 0
          [totle_join] => 0
          [max_nickname] => 
          [max_currency] => 
        )
 
      [1] => Array
        (
          [subject_id] => 4588
          [game_id] => 9228
          [parent_category_id] => 78
          [subject_title] => 本场比赛是否有加时赛
          [subject_date_time] => 1490668200
          [status] => 2
          [subject_answer] => 0
          [totle_join] => 0
          [max_nickname] => 
          [max_currency] => 
           
 
        )
 
      [2] => Array
        (
          [subject_id] => 4584
          [game_id] => 9228
          [parent_category_id] => 78
          [subject_title] => 第二节两队总得分之和是
          [subject_date_time] => 1490668200
          [status] => 1
          [subject_answer] => 0
          [totle_join] => 0
          [max_nickname] => 
          [max_currency] => 
        )
 
      [3] => Array
        (
          [subject_id] => 4585
          [game_id] => 9228
          [parent_category_id] => 78
          [subject_title] => 第三节两队总得分之和是
          [subject_date_time] => 1490668200
          [status] => 2
          [subject_answer] => 0
          [totle_join] => 0
          [max_nickname] => 
          [max_currency] => 
         )
    )

要按照status字段的升序排列的话,只需要这样写

foreach($data as $key => &$value) {
      // 按照status的升序排序,使用用户自定义的比较函数对数组中的值进行排序,
      // 本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
      // 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
      usort($value['guess_subject'], function($a, $b){
        if ($a['status'] == $b['status'])
          return 0;
        return ($a['status'] < $b['status']) ? -1 : 1;
      });
      
    }
    return $data;

就会按照status的 升序排列啦, status=1 的数组单元会排在前面

PHP 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
Zend Framework页面缓存实例
Jun 25 PHP
php数字运算验证码的实现代码
Jul 30 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
Smarty模板变量调节器用法分析
May 23 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
Fleaphp常见函数功能与用法示例
Nov 15 PHP
php 可变函数使用小结
Jun 12 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
AJAX的使用方法详解
Apr 29 #PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 #PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 #PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 #PHP
PHP中Notice错误常见解决方法
Apr 28 #PHP
PHP实现查询手机归属地的方法详解
Apr 28 #PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 #PHP
You might like
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
详解Python中的Cookie模块使用
2015/07/06 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
小学毕业感言50字
2014/02/16 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
历史博物馆观后感
2015/06/05 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
create-react-app开发常用配置教程
2022/06/25 Javascript