【问题标题】:How to sort an Array of Associative Arrays by a Value [duplicate]如何按值对关联数组的数组进行排序[重复]
【发布时间】:2013-05-11 00:02:48
【问题描述】:

所以我有一个数组:

$array = (
    array('name' => 'John' , 'total' => '33'),
    array('name' => 'Robert' , 'total' =>  '66'),
    array('name' => 'John' , 'total' => '22'),
)

我想按总数对数组进行排序。

所以输出将是:

$array = (
    array('name' => 'Robert' , 'total' =>  '66')
    array('name' => 'John ' , 'total' => '33')
    array('name' => 'John' , 'total' => '22')
)

我该怎么做?

【问题讨论】:

标签: php arrays


【解决方案1】:

不,我认为你最好使用 arsort()。 http://www.php.net/manual/en/function.arsort.php

【讨论】:

    【解决方案2】:
    function totalDescSort($item1, $item2)
    {
        if ($item1['total'] == $item2['total']) return 0;
        return ($item1['total'] < $item2['total']) ? 1 : -1;
    }
    usort($array,'totalDescSort');
    

    从这里:https://stackoverflow.com/a/1597788/623400

    【讨论】:

      【解决方案3】:

      为此使用多重排序

      $total = array();
      foreach ($array as $key => $row)
      {
          $total[$key] = $row['total'];
      }
      array_multisort($total, SORT_DESC, $array);
      

      【讨论】:

        【解决方案4】:

        我认为您可以使用array_multisort()DESCENDING 的顺序对数组元素进行排序:

        $array = array(
        
             array('name' => 'John', 'total' => '33'),
             array('name' => 'Robert', 'total' =>  '66'),
             array('name' => 'John', 'total' => '22')
        
        );
        
        array_multisort($array, SORT_DESC);
        var_dump($array);
        

        这将输出

        array(3) {
          [0]=>
          array(2) {
            ["name"]=>
            string(6) "Robert"
            ["total"]=>
            string(2) "66"
          }
          [1]=>
          array(2) {
            ["name"]=>
            string(4) "John"
            ["total"]=>
            string(2) "33"
          }
          [2]=>
          array(2) {
            ["name"]=>
            string(4) "John"
            ["total"]=>
            string(2) "22"
          }
        }
        

        DEMO

        【讨论】:

          【解决方案5】:

          使用 array_multisort 方法

          $arr = array(
              array('name' => 'John' , 'total' => '33'),
              array('name' => 'Robert' , 'total' =>  '66'),
              array('name' => 'John' , 'total' => '22'),
          );
          
          $total = array();
          foreach ($arr as $key => $row)
          {
              $total[$key] = $row['total'];
          }
          array_multisort($total, SORT_DESC, $arr);
          

          【讨论】:

          • 这就是我所做的,它对我有用。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-01
          • 2011-07-09
          • 2013-04-23
          • 1970-01-01
          • 2014-05-22
          • 2013-07-26
          • 1970-01-01
          相关资源
          最近更新 更多