我一直使用这种方法来完成这种排序,但对我来说看起来不正确
usort($array, function($team1, $team2){
$t1 = ($team1->points * 1000) + ($team1->goalsFor - $team1->goalsAgainst);
$t2 = ($team2->points * 1000) + ($team2->goalsFor - $team2->goalsAgainst);
if($t1 == $t2) return 0;
return $t1 > $t2 ? 1 : -1;
});
此方法的替代方法是使用 str_pad,它的作用几乎相同
基本上我所做的是用零分隔排序主题
$t1 = 32008; // 32 points with a GD of 8
$t2 = 32003; // 32 points with a GD of 3
但是如果一支球队有一个奇怪的目标差异怎么办?
$t1 = 32008; // 32 points with a GD of 8
$t2 = 33000; // 32 points with a GD of 1000
显然这不可能发生,但这是一个例子
这是一个好方法吗?32-64 位/浮点数 [im] 精度限制怎么样?
有人对此有建议吗?
谢谢你 :)
随时改进标题