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 作用域解析运算符(::)
Jul 27 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
php出现web系统多域名登录失败的解决方法
Sep 30 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
Apr 11 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
php 猴子摘桃的算法
Jun 20 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 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
PHP array_multisort()函数的使用札记
2011/07/03 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
Python基础之函数用法实例详解
2014/09/10 Python
python基于phantomjs实现导入图片
2016/05/13 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
八项规定整改措施
2014/02/12 职场文书
优秀员工演讲稿
2014/05/19 职场文书
2014年人事科工作总结
2014/11/19 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
mysql创建存储过程及函数详解
2021/12/04 MySQL
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL