如何对"中的数组值求和?#34;环

时间:2018-01-05 10:27:17

标签: php arrays

这是我的代码:

<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]的总和。我的代码已经计算了,但结果与我的期望不一致。有人能告诉我如何做对吗?感谢

1 个答案:

答案 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>