每月分期付款

Rup*_*ric 6 php arrays

设想一个场景,每月租金为100,000,每个月底应支付。然后,租户决定支付350,000美元,以应付当月及以后的月份。由于我显然可以在此看到三个月半的时间,因此我应该如何分配这笔款项?这是我在PHP中尝试的方法,但我无法显示最后的50,000。

$rent       = 100000; // rent amount
$amountPaid = 350000; // amount paid by tenant

$length     = $amountPaid/$rent; // number of months paid for

for ($c = 1; $c <= $length; $c++) 
{
    $foreachMonth = $rent;
    assignRentFunction($c, $foreachMonth);
}

function assignRentFunction($count, $amt)
{
    echo "Month ".$count.': '.$amt."<br>";
}
Run Code Online (Sandbox Code Playgroud)

Pup*_*pil 6

脚步:

1)获得具有ceil()功能的总月数。

2)它将返回4个月。3个月全额支付,一个月只支付50000。

3)现在,每个循环将在已付租金总额中增加10000。

4)如果超过付款金额,则获得mod为50000

$rent       = 100000; // rent amount
$amountPaid = 350000; // amount paid by tenant
$length     = ceil($amountPaid/$rent); // number of months paid for
$totalRent = 0;
for ($c = 1; $c <= $length; $c++) {
    $totalRent += $rent;
    $foreachMonth = $rent;
    if ($amountPaid < $totalRent) { // Here is the logic, if amount exceeds, use the remaining amount.
        $foreachMonth = $amountPaid % $rent;
    }    
    assignRentFunction($c, $foreachMonth);
}
function assignRentFunction($count, $amt) {
    echo "Month ".$count.': '.$amt."<br>";
}

**Output:**

Month 1: 100000
Month 2: 100000
Month 3: 100000
Month 4: 50000
Run Code Online (Sandbox Code Playgroud)


dea*_*ina 5

由于似乎有几种方法可以切成薄片,所以我想我也应该把帽子戴在戒指上:

for($c = 1; $c<=ceil($amountPaid/$rent); $c++){
    assignRentFunction($c, $rent - max(($c * $rent - $amountPaid),0));
}
Run Code Online (Sandbox Code Playgroud)

现在评论版本:

for($month = 1; $month<=ceil($amountPaid/$rent); $month++){
    //For each month there is money for rent (using ceil() to account for fractions)

    assignRentFunction(
        $month,
        // The number of the month

        $rent
        //Show the rent ($rent)

        -
        //Deduct

        max(($month * $rent - $amountPaid),0)
        //Any difference if the whole rent for that month hasn't been paid

        /**
         * This relies on a little hack with the max() function:
         * max($var,0) will return 0 if $var is less than 0.
         * So we check to see if the sum of rent up to that month ($month * $rent)
         * is greater than what was paid ($month * $rent) - $amountPaid.
         * If it isn't because it's wrapped in the max,
         * the net (negative) number will just be shown as nill.
         * If it is, the net positive number will be subtracted
         * from the month's rent.
         **/
    );
}
Run Code Online (Sandbox Code Playgroud)


小智 5

$rent= 100000; // rent amount
$amountPaid= 350000; // amount paid by tenant
$length= $amountPaid/$rent; // number of months paid for
for ($c = 1; $c <= ceil($length); $c++) 
{
    $foreachMonth = 100000;
    if($amountPaid>$rent)
    {
        $rent=$rent;
        $amountPaid=$amountPaid-$rent;
    }
    else
    {
        $rent=$rent-$amountPaid;
    }
    assignRentFunction($c, $rent);
}

function assignRentFunction($count, $amt)
{

    echo "Month ".$count.': '.$amt."<br>";
}
Run Code Online (Sandbox Code Playgroud)