除了用户之外,还要分享一个amout

时间:2015-08-20 12:23:14

标签: php math

我想在一些用户之间平均分配金额。如果金额不能平等分割,那么所有其他成员将获得相等的金额,期望最后一个会得到剩余资金的成员。这是我试过的

$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。

但是这种逻辑似乎并不适用于所有情况。

请帮忙。谢谢。

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,逻辑也不会失败。因为它收到了更多的赞成票,对代码进行了评论,使其更加清晰。