2013-07-22 44 views
1

重複相同的值我創建一個PHP的財務計算,這需要我從數據庫中繪製數據,應用各種計算來確定月數和每月支付的保險費,然後迴應每個月的結果。.Foreach顯示正確的迭代,但在每個

發生什麼事是foreach正在返回正確的行數,但爲每次迭代重複最後一行,因此所有行都是相同的。

我遠離php fundi,花了3天的時間搜索論壇,手冊等,一直沒能找到問題。一些可能已經得到答案的文章完全凌駕於我的頭上。

對此的任何援助將深受感謝!

代碼:在我的測試案例= 38

$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個月(行)返回,分別表示該月的值。我的$ monthly_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> 

結果應該是: 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
3636。36
3,636.36
4,000.00
4,000.00

回答

0

可能不是解決辦法,但兩件事情:

  • 這表明38總是因爲你在foreach回波後的收盤}
  • 你爲什麼用途'1'代替1在if($ i =='1'){?
+0

感謝您的迴應,但回聲在foreach語句的{}括號內。它不在最初的'for'聲明中,但不是foreach。如果我把它放在for語句中,那麼重複本身不斷重複。 – Vivienne

+0

我一直在玩你整天說的話,終於至少解決了我的一部分問題。你對於結束語是正確的},但只有當我徹底拋棄了foreach語句,並且只是在for語句結尾處的echo之前,它才起作用。然後在我的代碼中發現與迭代中的日期計算和格式有關的不同問題。這是一個開始。謝謝! – Vivienne

相關問題