3

最高スコアから最低スコアに並べ替える必要がある次の配列があります。

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
        )

)

上記の配列は、この関数で既にソートされています。

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

usort($Array, 'sortByOrder');

最高のスコアを持つ配列がリストに上がるので、これはうまくいくようです。

ただし、同点でもいくつかのファウルを犯したチームもあります。スコアが別のスコアと等しい場合にファウルも考慮に入れるように関数を調整するにはどうすればよいですか? ファウルが最も少ないチームが上位に配置されます。

創造的なソリューションを楽しみにしています!

前もって感謝します。

4

2 に答える 2

7

関数を更新するだけですsortByOrder()

基本的:

function sortByOrder($a, $b){
  if ($b['score'] == $a['score'])
    return $a['fouls'] - $b['fouls'];
  else
    return $b['score'] - $a['score'];
}
于 2012-05-16T08:56:49.383 に答える