我写了一个php脚本,它将执行一个完整的(荷兰)足球比赛,基于参数作为力量和道德。
在完成所有轮次后,我使用usort
来定义最终结果。
这些结果基于'积分'领域。但是,当两支球队拥有相同数量的积分时,必须通过比较目标差异来实现进一步的排名。
我尝试使用第一个排序点'完成此排序。然后排序om' GoalDifference(GD)'。不幸的是,在后一种情况下,目标差异是正确排序的,而不是点......
这就是现在的球队阵列:
$teams = array
(
array(
'Id' => 1,
'Teamname' => 'Team 1,
'Strength' => 22,
'Moral' => 15,
'Points' => 0,
'Pro' => 0,
'Contra'=> 0,
'GD' => 0
)
}
在usort函数下面
usort($teams, function($a, $b) {
return $a['Points'] < $b['Points'];
});
usort($teams, function($a, $b) {
return $a['GD'] < $b['GD'];
});
所以我的问题是,首先对点数进行排序的最佳方法是什么?之后是什么是目标差异?
亲切的问候,
基斯
答案 0 :(得分:1)
同时包括两个比较。因此,如果积分相同,请使用目标差异
getLabelCell().padLeft ...
答案 1 :(得分:1)
您可以构建一个更复杂的排序函数,以优先检查列。
usort($teams, function($a, $b) {
return ($a['Points'] === $b['Points']
? $a['GD'] < $b['GD']
: $a['Points'] < $b['Points']);
});
答案 2 :(得分:1)
您可以使用array_multisort()
功能。
$points = array();
$gd = array();
foreach ($teams as $key => $row) {
$points[$key] = $row['Points'];
$gd[$key] = $row['GD'];
}
array_multisort($points, SORT_DESC, $gd, SORT_DESC, $teams);