Php .Foreach显示正确的迭代,但在每个迭代中重复相同的值

Php .Foreach显示正确的迭代,但在每个迭代中重复相同的值,php,foreach,iteration,Php,Foreach,Iteration,我正在用PHP创建一个财务计算,它要求我从数据库中提取数据,应用各种计算来确定月数和每月支付的保险费,然后返回每个月的结果 所发生的事情是foreach返回正确的行数,但在每次迭代中重复最后一行,因此所有行都是相同的 我远离php基金会,花了3天时间在论坛、手册等中搜索,一直没有找到问题。有些文章可能已经有了答案,但我完全看不懂 在此方面的任何帮助都将不胜感激 守则: $grosstotal = array(); for ($i=1; $i<=$totaldiff; $i++)

我正在用PHP创建一个财务计算,它要求我从数据库中提取数据,应用各种计算来确定月数和每月支付的保险费,然后返回每个月的结果

所发生的事情是foreach返回正确的行数,但在每次迭代中重复最后一行,因此所有行都是相同的

我远离php基金会,花了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);
} 
$grosstotal=array();

对于($i=1;$i可能不是解决方案,而是两件事:

  • 它总是显示38,因为foreach中的回音在for closing}之后
  • 为什么在if($i=='1'){时使用'1'而不是1

感谢您的回复,但回音在{}范围内foreach语句的括号。它不在最初的“for”语句中,但不是foreach语句。如果我把它放在for语句中,那么重复本身就会不断重复。我一整天都在玩弄你说的话,最后至少解决了我的部分问题。关于结束,你是对的},但只有完全取消foreach语句,并在for语句末尾的}之前插入echo,它才会起作用。这揭示了我的代码中与迭代中的日期计算和格式有关的另一个问题。这是一个开始。谢谢!
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>