2

所以我有一个数组:

$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')
)

我怎样才能做到这一点?

4

5 回答 5

1

为此使用 Multisort

$total = array();
foreach ($array as $key => $row)
{
    $total[$key] = $row['total'];
}
array_multisort($total, SORT_DESC, $array);
于 2013-05-16T07:46:20.493 回答
1

使用 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);
于 2013-05-16T07:53:57.840 回答
0

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

于 2013-05-16T07:42:37.540 回答
0
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

于 2013-05-16T07:43:56.973 回答
0

我认为您可以使用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"
  }
}

演示

于 2013-05-16T07:48:34.957 回答