-3

可能重复:
PHP - 多个 uasort 函数中断排序

我在php中有3列的多维数组。我需要按“awarded_units”对其进行排序,如果两个用户具有相同的awarded_units(tiebreaker),那么选择最少的单位将首先出现。

user_id awarded_units selected_units

15       5               2
22       5               1
3        4               2
4        4               5
5        4               1

正如你所看到的,我已经使用一些多维排序函数基于award_units 对数组进行了排序。现在,我需要解决决胜局条件。由于 user_id=15 和 user_id=22 具有相同的奖励单位,因此 user_id 22 必须排在第一位。

正确的顺序将是

user_id awarded_units selected_units

22       5               1
15       5               2
5        4               1
3        4               2
4        4               5

请告诉我该怎么做。谢谢

4

2 回答 2

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);
于 2012-10-26T13:58:18.437 回答
0

使用带有 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 - 更大的灵活性和更好的可读性。

于 2012-10-26T13:59:18.680 回答