php二维数组与表的总和

时间:2016-03-18 11:48:29

标签: php html multidimensional-array

我正在搜索使用和数组

的通用代码
$arr[$key1][$key2] = $value;

输出应该是这样的,“SUM”不是数组的一部分。

     | 1st key2 | 2nd key2 | 3rd key2 | SUM
1st key1  |       10 |       10 |       10 |  30
2nd key1  |       10 |       10 |       10 |  30
3rd key1  |       10 |       10 |       10 |  30
SUM       |       30 |       30 |       30 |  90

所以我开始输出以查看我得到了多远:

echo '<table width="100%"><thead>';
foreach($arr as $linekey => $line)
{
    echo '<tr>';
    echo '<th align="center">';
    echo '</th>';
    foreach($line as $key => $value)
    {
        echo '<th align="center">';
        echo $key;
        echo '</th>';
    }
    echo '<th align="center">';
    echo 'SUM';   //adding the SUM column
    echo '</th>';
    echo '</tr>';
    break;
}
echo '</thead><tbody>';
foreach($arr as $key1 => $value1)
{ echo '<tr>';
     echo'<td>'.$key1.'</td>';
     $sumRow = 0; //reset sumRow
    foreach($arr[$key1] as $key2 => $value2)
    {
         echo'<td>'.round($arr[$key1][$key2],0).'</td>';      
         $sumRow += $arr[$key1][$key2]; //summing up rows
         $sumAll += $arr[$key1][$key2]; //summing up everything
         $sumCol += $arr[$key1][$key2]; //where should be this?
    }
    echo'<td>'.round($sumRow,0).'</td>'; //echo $sumRow
    echo '</tr>';
}
echo '</tbody></table>';

这个alaredy有效,但我不知道在哪里总结列

1 个答案:

答案 0 :(得分:1)

您应该使用数组$sumCol来收集列总和:

$sumCol[$key2] += $arr[$key1][$key2];

它的大小应该是列数。

如果没有数组,你不能在一个循环中完成它,因为你在内部循环索引列,所以你只能在一个临时变量(没有数组)中收集sumRow

然后,最后:

echo '<tr><td>SUM</td>';
    foreach($sumCol as $key2 => $value2)
    {
        echo'<td>'.round($sumCol[$key2],0).'</td>'; //echo $sumCol
    }
echo '</tr>';
echo '</tbody></table>';

另一种方法是定义第二个循环,在第二个循环中首先遍历列,第二个循环遍历行。