我有一系列玩家,这些是阵列本身,我想按分数排序。
[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
答案 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']);