这是我的代码:
<tr align="right">
<td style="white-space: nowrap" align="left"><?= $dt_left_header ?></td>
<td></td>
<?php
//trx data
for($p=0; $p < count($arr_prd_grp); $p++){
$prd_id = $arr_prd_grp[$p] ;
//print_r($arr_prd_grp[$p]);
if($left_header[$j][1] == 1){
echo '<td></td>';
}else{
echo'
<td>'.number_format($arr_amt[$coa_id][$prd_id], 2,',','.').'</td>
';
}
}
//TOTAL
if($left_header[$j][1] == 1){
echo '<td></td>';
}else{
echo'
<td>'.number_format($amt_tot += $arr_amt[$coa_id][$prd_id], 2,',','.').'</td>
';
}
?>
</tr>
在这种情况下,我想计算$arr_amt[$coa_id][$prd_id]
的总和。我的代码已经计算了,但结果与我的期望不一致。有人能告诉我如何做对吗?感谢
答案 0 :(得分:1)
将总和计算移动到第一个循环,然后在适当的位置显示结果。为了更容易,我做了一个额外的变量$ totalAmount;
另外我的猜测是你有另一个外循环(可能是每个表行)。您当前的代码没有将totalAmount默认为0,因此它添加了每行的所有ammounts,这就是为什么您导致这么大的数字。我们为每一行添加一个默认值0来帮助它。
<tr align="right">
<td style="white-space: nowrap" align="left"><?= $dt_left_header ?></td>
<td></td>
<?php
//trx data
$totalAmount = 0; // default it
for($p=0; $p < count($arr_prd_grp); $p++){
$prd_id = $arr_prd_grp[$p] ;
//print_r($arr_prd_grp[$p]);
if($left_header[$j][1] == 1){
echo '<td></td>';
}else{
echo'
<td>'.number_format($arr_amt[$coa_id][$prd_id], 2,',','.').'</td>
';
$totalAmount+=$arr_amt[$coa_id][$prd_id];
}
}
//TOTAL
if($left_header[$j][1] == 1){
echo '<td></td>';
}else{
echo'
<td>'.number_format($totalAmount, 2,',','.').'</td>
';
}
?>
</tr>