我正在用 PHP 创建一个财务计算,它要求我从数据库中提取数据,应用各种计算来确定每月支付的月数和保险费,然后回显每个月的结果。
发生的事情是 foreach 返回正确的行数,但每次迭代都重复最后一个,因此所有行都是相同的。
我远离 php fundi,花了 3 天时间在论坛、手册等中搜索,但未能找到问题所在。一些可能有答案的文章,完全超出了我的想象。
对此的任何帮助将不胜感激!!
编码:
$grosstotal = array();
for ($i=1; $i<=$totaldiff; $i++)
{
if ($i == '1') {
$start = $docraw;
}else {
$realdoc = strtotime(date('Y-m-d', strtotime($docraw)));
$start = $realdoc;
}
$days_between = round(abs($end - $start) / 86400);
$contribution_core = round(abs($days_between) / 30.42);
$mca = -floor($contribution_core/12);
$mcb = ($escalation+100)/100;
$months_contribution = $current_premium*(pow($mcb,$mca));
$grosstotal[] = $months_contribution;
}
foreach($grosstotal as $months_contribution) {
echo $months_contribution . '<br>';
$gtotal = array_sum($grosstotal);
}
我的测试用例中的 $totaldiff = 38,因此返回的结果应该是 38 个月(行),每个显示该月的值。我最后一个月的 $months_contribution 是 4000。第一行根本没有显示。每 12 个月应反映不同的金额,因为保费每年都在上涨。在这种情况下,除了第一行之外,它根本没有变化。
当我将 $i 添加到我的 echo 语句时,它在每一行都显示为 38,我认为这表明 $i 没有增加,而是纯粹使用它的最终值。
我得到的结果是:
66.4009861824<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
3005.25920361<br>
The result should be: 3,005.26
3,005.26
3,005.26
3,005.26
3,005.26
3,005.26
3,005.26
3,005.26
3,005.26
3,005.26
3,005.26
3,005.26
3,305.79
3,305.79
3,305.79
3,305.79
3,305.79
3,305.79
3,305.79
3,305.79
3,305.79
3,305.79
3,305.79
3,305.79
3,636.36
3,636.36
3,636.36
3,636.36
3,636.36
3,636.36
3,636.36
3,636.36
3,636.36
3,636.36
3,636.36
3,636.36
4,000.00
4,000.00