我有一个多维数组,如下所示:
$arr=Array
(
[0] => Array
(
[0] => TEAM1
[1] => 3
[2] => 0
[3] => 422.47
[4] => 192.62
)
[1] => Array
(
[0] => TEAM2
[1] => 2
[2] => 1
[3] => 402.14
[4] => 210.70
)
[2] => Array
(
[0] => TEAM3
[1] => 3
[2] => 0
[3] => 376.79
[4] => 174.64
)
)
5个栏目与团队名称相关,#wins,#loss,点数#,点数#。
我如何按第1列(#Wins)(降序)排序$arr
,然后第2列(#Losses)(升序),然后第3列(Pts For#)(降序)
答案 0 :(得分:4)
我找到了一个使用array_multisort()
foreach ($arr as $key => $row) {
$wins[$key] = $row[1];
$losses[$key] = $row[2];
$ptsfor[$key] = $row[3];
}
array_multisort($wins, SORT_DESC, $losses, SORT_ASC, $ptsfor, SORT_DESC, $arr);
答案 1 :(得分:0)
相反,您可以像{/ p>一样使用usort
函数
usort($arr, function($a,$b){
if($a[1] != $b[1])
return $b[1] - $a[1];
else if($a[2] != $b[2])
return $a[2] - $b[2];
else if($a[3] != $b[3])
return $b[3] - $a[3];
});
或者您可以像
一样使用它usort($arr,function($a,$b){
$c = $b[1] - $a[1];
$c .= $a[2] - $b[2];
$c .= $b[3] - $a[3];
return $c;
});
答案 2 :(得分:0)
您可以使用此功能
function sort_array($array, $sortkey, $order)
{
if ($order == "DESC")
$or = "arsort";
else
$or = "asort";
foreach ($array as $key => $array_row)
{
$sort_values[$key] = $array_row[$sortkey];
}
$or($sort_values);
reset($sort_values);
while (list ($arr_key, $arr_val) = each($sort_values))
{
$sorted_arr[] = $array[$arr_key];
}
return $sorted_arr;
}