所以我有一个数组:
$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')
)
我该怎么做?
答案 0 :(得分:1)
将Multisort用于此
$total = array();
foreach ($array as $key => $row)
{
$total[$key] = $row['total'];
}
array_multisort($total, SORT_DESC, $array);
答案 1 :(得分: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);
答案 2 :(得分:0)
不,我认为你应该更好地使用arsort()。 http://www.php.net/manual/en/function.arsort.php
答案 3 :(得分:0)
function totalDescSort($item1, $item2)
{
if ($item1['total'] == $item2['total']) return 0;
return ($item1['total'] < $item2['total']) ? 1 : -1;
}
usort($array,'totalDescSort');
答案 4 :(得分: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"
}
}