1

我正在用 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


4

1 回答 1

0

可能不是解决方案,而是两件事:

  • 它总是显示 38 因为你在 foreach 中的回声是在 for 关闭之后 }
  • 为什么在 if ($i == '1') { 处使用 '1' 而不是 1?
于 2013-07-22T11:37:55.073 回答