PHP中的特定多维数组排序

时间:2013-11-07 02:12:59

标签: php arrays sorting

我有一系列玩家,这些是阵列本身,我想按分数排序。

[player_info] => Array
(
    [0] => Array
        (
            [player_] => âlêj!!tâ~ôk
            [score_] => 66
            [ping_] => 
            [team_] => Blue
        )

    [1] => Array
        (
            [player_] => alejitbella
            [score_] => 3
            [ping_] => 
            [team_] => Blue
        )

    [2] => Array
        (
            [player_] => §Uph§£lMejo
            [score_] => 34
            [ping_] => 
            [team_] => Red
        )

    [3] => Array
        (
            [player_] => timoleon
            [score_] => 10
            [ping_] => 
            [team_] => Red
        )

)

我已经设法让我们正常工作(上面的示例中未显示)但是我需要保留团队的位置。 让我们说西蒙,贝基,阿列克和乔治都在这里。

Simon 25 Red
Becky 13 Red
Alek 3 Blue
George 5 Blue

我希望能够按分数从高到低排列,同时根据团队保留在阵列中的位置。

我怎么能做到这一点?

编辑:由于人们认为这是重复的,我需要澄清。

我想在保留团队“红色”和“蓝色”

的顺序的同时按分数订购

基本上我想把上面的例子变成     西蒙25红     贝基13红     乔治5蓝     Alek 3 Blue

1 个答案:

答案 0 :(得分:0)

希望我理解正确。这是我的固定功能。由于你没有显示usort(),我不知道它是否仍然需要或者如何使用它:

function array_column_sort(&$array, $column, $sort=SORT_ASC) {
    foreach($array as $key => $val) {
        $sort_array[$key] = $val[$column];
    }
    array_multisort($sort_array, $sort, $array);
}

// run yours like this
array_column_sort($array['player_info'], 'score_', SORT_DESC);

$ sort标志与array_multisort()

的定义相同

为了保持团队(没时间投入功能,你的练习)尝试这个(未经测试):

foreach($array['player_info'] as $key => $val) {
    $score[$key] = $val['score_'];
    $team[$key]  = $val['team_'];
}
array_multisort($team, SORT_ASC, $score, SORT_DESC, $array['player_info']);