我在PHP中有3列的多维数组。我需要按" awards_units"进行排序。如果两个用户拥有相同的award_units(tiebreaker),那么选择最少单位的用户将首先出现。
user_id awarded_units selected_units
15 5 2
22 5 1
3 4 2
4 4 5
5 4 1
如您所见,我已经使用一些多维排序函数在awards_units的基础上对数组进行了排序。现在,我需要解决决胜局条件。由于user_id = 15和user_id = 22具有相同的award_units,因此user_id 22必须首先出现。
正确的顺序将是
user_id awarded_units selected_units
22 5 1
15 5 2
5 4 1
3 4 2
4 4 5
请告诉我该怎么做。谢谢
答案 0 :(得分:1)
您可以使用array_multisort
:
$cols = array();
foreach ($multiArray as $key => $value)
{
$cols['awarded_units'][$key] = $value['awarded_units'];
$cols['selected_units'][$key] = $value['selected_units'];
}
array_multisort($cols['awarded_units'], SORT_DESC, $cols['selected_units'], SORT_ASC, $multiArray);
答案 1 :(得分:0)
使用custom sort function with usort:
usort($data, function($a, $b) {
if ($a['awarded_units'] == $b['awarded_units'])
{
return $b['selected_units'] - $a['selected_units'];
}
return $b['awarded_units'] - $a['awarded_units'];
});
您也可以使用array_multisort,但我更喜欢使用usort - 更灵活,更易读。