我有一个 40 人的高尔夫联赛。我们都把钱扔进一个底池,然后根据最终得分支付前 6 名。
如果没有平局,支付将很简单,但我们经常有,例如,2 人并列第一,3 人并列第二,1 人单独获得第三,等等。变化似乎无穷无尽。
我一直在尝试使用 PHP 自动计算每个地方的支出,但没有成功。任何建议、帮助或指向正确方向将不胜感激。我注意到其他人试图在这个网站上提出类似的问题,但未能成功地提出问题。我会努力做得更好。
这是我一直在玩的一些数据:
$playerNumber=40;
$totalPoints=100;
支出:
$pointsFirst=0.6*$totalPoints;
$pointsSecond=0.2*$totalPoints;
$pointsThird=0.15*$totalPoints;
$pointsFourth=0.03*$totalPoints;
$pointsFifth=0.02*$totalPoints;
$pointsSixth=0.01*$totalPoints;
对于上面给出的示例并支付六个位置,我们将按如下方式计算支付:如果两个人并列第一名,我们将第一名和第二名的分数相加并除以 2。如果三个人并列第二名,我们将第三名、第四名和第五名的分数相加并除以三。如果一个人单独排在第三,这个人将获得第六名。
我可以计算在某个位置上或并列的玩家数量。
$countFirst=2;
$countSecond=3;
$countThird=1;
$countFourth=2;
$countFifth=1;
$countSixth=2;
在此示例中,玩家得分为 72、72、73、73、73、74、75、75、76、77、77。
起初我以为这是嵌套数组的应用程序。然后我想也许使用数组、数组切片等可能是一种方法。每次我都在树林里结束。我没有看到逻辑。
我使用条件语句来支付三个地方,但用这种方法支付六个地方让我陷入困境。
使用条件语句向三个地方支付的示例:
$pointsFirst=0.5*$totalPoints;
$pointsSecond=0.3*$totalPoints;
$pointsThird=0.2*$totalPoints;
if($countFirst>2) {
$ptsA=round($totalPoints/$countFirst,2);
}
elseif($countFirst==2) {
$ptsA=round(($pointsFirst+$pointsSecond)/2,2);
if($countSecond>1) {
$ptsB=round($pointsThird/$countSecond,2);
}
elseif($countSecond==1) {
$ptsB=round($pointsThird,2);
}
}
elseif($countFirst==1) {
$ptsA=round($pointsFirst,2);
if($countSecond>1) {
$ptsB=round(($pointsSecond+$pointsThird)/2,2);
}
elseif($countSecond==1) {
$ptsB=round($pointsSecond,2);
if($countThird>1) {
$ptsC=round($pointsThird/$countThird,2);
}
elseif($countThird==1) {
$ptsC=round($pointsThird,2);
}
}
}
我希望我的要求已经很清楚了。我很乐意澄清任何事情。如果有人对如何有效地将支付计算自动化到六个地方有任何想法,我将永远感激不尽。谢谢!麦克风
根据请求:
$scores=array();
$scores[0]=72;
$scores[1]=72;
$scores[2]=73;
$scores[3]=73;
$scores[4]=73;
$scores[5]=74;
$scores[6]=75;
$scores[7]=75;
$scores[8]=76;
$scores[9]=77;
$scores[10]=77;
$payout=array();
$payout[0]=0.6*$totalPoints;
$payout[1]=0.2*$totalPoints;
$payout[2]=0.15*$totalPoints;
$payout[3]=0.03*$totalPoints;
$payout[4]=0.02*$totalPoints;
$payout[5]=0.01*$totalPoints;
$countScores=array();
$countScores[0]=$countFirst;
$countScores[1]=$countSecond;
$countScores[2]=$countThird;
$countScores[3]=$countFourth;
$countScores[4]=$countFifth;
$countScores[5]=$countSixth;