2010-11-03 165 views
0

是否有可能在程序運行前在標題中顯示總和?PHP循環顯示總和循環前計算

while (($data = fgetcsv($handle, 1000, ","))) { 

if($data[2] != $prevRow2) { 

echo '</div>'; 
if ($prevRow2 != '') { 
    $stringData .= '</Payment>'; 
} 
echo "<div id=\"row\">"; 
echo $sum; 
$row++; 
      $sum = 0; 
} 
else { echo "<div id=\"filler\"></div>";} 

foreach ($data as $key => $d) { 
    if ($key != 1) { 
    echo "<div class=\"field\">" .$d . "</div>"; 
    } 
} 

$sum +=$data[6]; 
echo "<br/>"; 
echo "<div id=\"filler\"></div>"; 
         $prevRow2 = $data[2]; 
} 

fclose($handle); 
} 

回答

3

您可以緩衝輸出,在循環運行後用總和打印出標題,然後輸出緩衝區。

這可以簡單地通過不回顯,但將所有值分配給變量並在最後回顯該變量 - 或通過使用ob_start,ob_end_flush等函數來實現。

,而不是在你的例子

所以:

while (true) { 
    echo "lots of code"; 
    echo "some variable: " . $variable; 
    $sum = $sum + 1; 
} 

寫:

while (true) { 
    $output .= "lots of code"; 
    $output .= "some variable: " . $variable; 
    $sum = $sum + 1; 
} 

echo $sum; 
echo $output; 
+0

你可以給我一個例子與上面的代碼? – MG1 2010-11-04 06:23:52

+0

好的,編輯它。 – 2010-11-04 08:10:20

+0

我無法讓它工作。 ($ data = fgetcsv($ handle,1000,「,」))){ if($ data [2]!= $ prevRow2){ {\t \t echo'

'; if($ prevRow2!=''){ \t $ stringData。=''; \t} \t echo $ sum; \t echo「
"; \t $sum=0; \t $row++; \t } \t else { echo "
」;} \t if($ data [2] == $ prevRow2){ \t $ sum + = $ data [6]; \t} \t否則{$總和= $數據[6];} \t \t \t的foreach($數據作爲$密鑰=> $ d){ \t如果{ \t回聲「
" .$d . "
($鍵= 1!) 「; \t} } \t \t \t \t \t \t 回聲 「
」; echo「
」; \t $ prevRow2 = $ data [2]; } – MG1 2010-11-04 09:08:39