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 相关文章推荐
多文件上传的例子
Oct 09 PHP
php checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 PHP
PHP 数组和字符串互相转换实现方法
Mar 26 PHP
zf框架的校验器InArray使用示例
Mar 13 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
php将12小时制转换成24小时制的方法
Mar 31 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
php文件上传后端处理小技巧
May 22 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
Sep 21 PHP
Zend Framework上传文件重命名的实现方法
Nov 25 PHP
详解PHP中curl_multi并发的实现
Jun 08 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP insert语法详解
2008/06/07 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
python通过文件头判断文件类型
2015/10/30 Python
浅谈Python的异常处理
2016/06/19 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
如何真正的了解python装饰器
2020/08/14 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
分享一个python的aes加密代码
2020/12/22 Python
上海某公司.net方向笔试题
2014/09/14 面试题
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
2014年秋季开学演讲稿
2014/05/24 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
Python利用folium实现地图可视化
2021/05/23 Python
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
python异步的ASGI与Fast Api实现
2021/07/16 Python