我想在一些用户之间平均分配金额。如果金额不能平等分割,那么所有其他成员将获得相等的金额,期望最后一个会得到剩余资金的成员。这是我试过的
$number = $_POST['number'];
$noOfTime = $_POST['no_of_time'];
$perHead = ceil($number / $noOfTime);
for ($i = 1; $i <= $noOfTime; $i++) {
if ($i == $noOfTime) {
echo $perHead * $noOfTime - $number;
} else {
echo $perHead;
}
}
这里,如果数字是7,成员是4,前3个成员将是2,最后一个将得到1.像2,2,2,1。
但是这种逻辑似乎并不适用于所有情况。
请帮忙。谢谢。
答案 0 :(得分:3)
我认为它可以帮助你。
$no = 22;
$users = 8;
// count from 0 to $users number
for ($i=0;$i<$users;$i++)
// if the counting reaches the last user AND $no/$users rests other than 0...
if ($i == $users-1 && $no % $users !== 0) {
// do the math rounding fractions down with floor and add the rest!
echo floor($no / $users) + ($no % $users);
} else {
// else, just do the math and round it down.
echo floor($no / $users)." ";
}
输出:
2 2 2 2 2 2 2 8
编辑:我嵌套if
验证,即使users
为1或2,逻辑也不会失败。因为它收到了更多的赞成票,对代码进行了评论,使其更加清晰。