私はこの種のソートを達成するために常にこの方法を使用してきましたが、私には正しく見えません
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]precision 制限はどうですか?
誰かがこれについて提案がありますか?
ありがとうございました :)
タイトルを自由に改善してください