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

今天发现一个很好用二维数组排序的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 的数组单元会排在前面

(0)

相关推荐

  • PHP中数组合并的两种方法及区别介绍

    PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码 代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码 代码如下: <?php $c = array_merge($a, $b); var_ex

  • php数组操作之键名比较与差集、交集赋值的方法

    本文实例讲述了php数组操作之键名比较与差集.交集赋值的方法.分享给大家供大家参考.具体方法如下: 该实例主要实现对数组的各种常见操作.如对键名比较计算数组的差集,计算差集,给指定数组中插入一个元素,反转数组与交集赋值新的数组等. 具体代码如下: 复制代码 代码如下: //定义回调函数 function key_compare_func($key1,$key2) {   if($key1==$key2)         //如果两参数相等   return 0;          //返回0  

  • PHP自定义函数实现数组比较功能示例

    本文实例讲述了PHP自定义函数实现数组比较功能.分享给大家供大家参考,具体如下: <?php //数组使用标准比较运算符这样比较的 function standard_array_compare($op1,$op2) { if(count($op1) < count($op2)) { return -1; //$op1 < $op2 } else if(count($op1) > count($op1)) { return 1; //$op1 > op2 } foreach

  • PHP遍历数组的方法汇总

    今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一.foreach() foreach()是一个用来遍历数组中数据的最简单有效的方法. <?php $urls= array('aaa','bbb','ccc','ddd'); foreach ($urls as $url){ echo "This Site url is $url! <br />"; } ?> 显示结果: This Site url i

  • php比较多维数组中值的大小排序实现代码

    如果值没有重复的情况,可以先用array_flip()来交换键和值,然后krsort(),最后再array_flip()交换回来,就可以比较大小了.如果要截取数组,可用array_slice(). 如果有值重复的情况,就要用到一些排序算法了,不过php有很强大的函数uasort(),使用自定义的比较函数对数组中的值进行排序并保持索引关联,usort()则会重建索引. 复制代码 代码如下: function cmp($a, $b){ if ($a["vote_num"] == $b[&q

  • php数组添加元素方法小结

    本文较为详细的总结了php数组添加元素方法.分享给大家供大家参考.具体分析如下: 如果我们是一维数组增加数组元素我们可以使用ArrayListay_push,当然除这种方法之外我们还有更直接的办法,这里就来给大家整理一下. 一维数组增加元素 $ArrayList = ArrayListay(); Array_push($ArrayList, el1, el2 ... eln); 但其实有一种更直接方便的做法,代码如下: $ArrayList = ArrayListay(); $ArrayList

  • php获取数组长度的方法(有实例)

    在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数count(),或是sizeof()例如: 复制代码 代码如下: $arr = Array('0','1','2','3','4'); echo count($arr);// 输出 5$arr = array('A','B','C');echo sizeof($arr);//输出3 sizeof()和

  • php数组比较实现查找连续数的方法

    本文实例讲述了php数组比较实现查找连续数的方法.分享给大家供大家参考.具体如下: $data = array(); $data[]= array("01" ,"02", "18" , "29" , "31" , "32"); $data[]= array("02" ,"09", "11" , "22" ,

  • PHP 数组和字符串互相转换实现方法

    复制代码 代码如下: $array=explode(separator,$string); $string=implode(glue,$array); 使用和理解这两个函数的关键之处是分隔符(separator)和胶合符(glue)关系.当把一个数组转换成一个字符串时,将会设置胶合符--将被插入到生成字符串中的数组值之间的字符或代码. 相反,当把字符串转换成数组时,要指定分隔符,它用于标记什么应该变成独立数组元素.例如,以字符串开始: $s1='Mon-Tue-Wed-Thu-Fri'; $da

  • php数组应用之比较两个时间的相减排序

    $kkk = custom_tuijian("2008-08-15",date("Y-m-d")); //echo date("Y-m-d"); //print_r($kkk); function custom_tuijian($a,$b) { $sql = "select `r`.*,`a`.`articlename`,`a`.`author` from `phpsir_record1` `r` inner join `jieqi_a

随机推荐