我正在努力创建一个高尔夫比分直播排行榜,但我遇到了一个问题。我想通过谁拥有最低点来排序数组,但是,如果2个或更多具有相同的点,则按顺序排列它们所在的孔。
我的初始数组如下所示:
Array
(
[0] => Array
(
[userid] => 1301
[holes] => 6
[points] => -2
)
[1] => Array
(
[userid] => 231
[holes] => 5
[points] => 7
)
[2] => Array
(
[userid] => 3421
[holes] => 6
[points] => 7
)
[3] => Array
(
[userid] => 46
[holes] => 6
[points] => 3
)
[4] => Array
(
[userid] => 745
[holes] => 4
[points] => 7
)
)
现在,我这样做是按点对数组进行排序:
$sortArray = array();
foreach($playersArray as $person){
foreach($person as $key=>$value){
if(!isset($sortArray[$key])){
$sortArray[$key] = array();
}
$sortArray[$key][] = $value;
}
}
$orderby = "points";
array_multisort($sortArray[$orderby],SORT_ASC,$playersArray);
按顺序对数组进行排序,但正如你所看到的,我有3个玩家,他们有7个点,但在不同的洞上,并且想订购那些有相同洞的玩家,所以最高等级是最低洞的那个。
希望这是有道理的,感谢任何帮助。
提前致谢: - )
答案 0 :(得分:3)
使用usort
。
示例:
usort($playersArray, function ($a, $b) {
if ($a['points'] == $b['points']) {
return $a['holes'] < $b['holes'];
}
return $a['points'] < $b['points'];
});
将<
更改为>
以更改排序顺序。
答案 1 :(得分:0)
使用usort
。
此函数将使用用户提供的比较函数按其值对数组进行排序。如果要排序的数组需要按照一些非平凡的标准进行排序,则应使用此函数。
usort($score, function ($a, $b) {
return $a['points'] - $b['points']
? $a['points'] - $b['points']
: $a['holes'] - $b['holes'];
});
答案 2 :(得分:0)
尝试这种方式:
{{1}}