基于多个值对多维数组进行排序

Gil*_*ong 3 php arrays

我有以下数组,我需要从最高分到最低分.

Array
(
    [0] => Array
        (
            [team id] => 5
            [score] => 52
            [fouls] => 0
        )

    [1] => Array
        (
            [team id] => 4
            [score] => 47
            [fouls] => 0
        )

    [2] => Array
        (
            [team id] => 8
            [score] => 46
            [fouls] => 6
        )

    [3] => Array
        (
            [team id] => 1
            [score] => 46
            [fouls] => 5
        )

    [4] => Array
        (
            [team id] => 9
            [score] => 46
            [fouls] => 3
        )

)
Run Code Online (Sandbox Code Playgroud)

上面的数组已经使用此函数进行了排序:

function sortByOrder($a, $b){
    $Return = $b['score'] - $a['score'];
    return $Return;
}

usort($Array, 'sortByOrder');
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,因为得分最高的数组上升.

但是,有些球队得分相同但犯了一些犯规.如果分数等于另一个分数,我该如何调整功能以将犯规考虑在内?犯规次数最少的球队应该更高.

期待创意解决方案!

提前致谢.

Fro*_*y Z 7

你只需要更新你的功能sortByOrder().

基本上:

function sortByOrder($a, $b){
  if ($b['score'] == $a['score'])
    return $a['fouls'] - $b['fouls'];
  else
    return $b['score'] - $a['score'];
}
Run Code Online (Sandbox Code Playgroud)