找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1396|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 05:26:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            今天发现一个很好用二维数组排序的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']
就会按照status的 升序排列啦, status=1 的数组单元会排在前面
            
            
您可能感兴趣的文章:
  • php数组应用之比较两个时间的相减排序
  • php比较多维数组中值的大小排序实现代码
  • PHP中数组合并的两种方法及区别介绍
  • PHP 数组和字符串互相转换实现方法
  • php获取数组长度的方法(有实例)
  • php数组操作之键名比较与差集、交集赋值的方法
  • php数组添加元素方法小结
  • PHP遍历数组的方法汇总
  • php数组比较实现查找连续数的方法
  • PHP自定义函数实现数组比较功能示例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端