【问题标题】:Sort multi-dimensional array help排序多维数组帮助
【发布时间】:2011-01-26 16:09:57
【问题描述】:

我正在尝试按season_number 对该数组进行排序,但是我不确定要使用哪个函数,因为我假设我需要自定义排序?有什么想法吗?

Array
(
    [0] => Array
        (
            [season_number] => 7
            [show_id] => 21
            [show_seasons_id] => 14
        )

    [1] => Array
        (
            [season_number] => 6
            [show_id] => 21
            [show_seasons_id] => 31
        )

    [2] => Array
        (
            [season_number] => 1
            [show_id] => 21
            [show_seasons_id] => 40
        )

    [3] => Array
        (
            [season_number] => 2
            [show_id] => 21
            [show_seasons_id] => 41
        )
)

【问题讨论】:

    标签: php arrays sorting multidimensional-array


    【解决方案1】:

    您可以将usort 函数与“比较”函数一起使用:

    function compare_my_elements( $arr1, $arr2 ) {
       $s1=$arr1["season_number"];
       $s2=$arr2["season_number"];
       if( $s1 == $s2 ) return 0;
       return ( $s1 > $s2 ? 1 : -1 );
    }
    
    usort( $my_md_array, compare_my_elements );
    

    【讨论】:

      【解决方案2】:

      试试这个:

      foreach ($array as $key => $val) {
          $newArr[$key] = $val['season_number'];
      }
      array_multisort($newArr, SORT_ASC, $array);
      

      其中 $array 是您打印出来的数组。

      【讨论】:

      • 不错...虽然$link 可能必须变成$val
      • @xtofl 啊,是的,你是对的。抱歉,这是我经常使用的一段代码,我复制并粘贴了。我曾经像您的示例一样使用 usort ,但是,我发现这种方式要快一点。如果您有不同的发现,请告诉我。
      • 我没有调整它。这可能会更快,因为“键”只提取一次,而使用用户定义的函数,排序算法中的每个比较操作都需要键提取逻辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多