使用 foreach 循环添加每列的总和并在表格底部显示每个总计

Posted

技术标签:

【中文标题】使用 foreach 循环添加每列的总和并在表格底部显示每个总计【英文标题】:Add sum of each column and display each total in the bottom of the table using foreach loop 【发布时间】:2018-08-30 09:49:10 【问题描述】:

我有这个用于查询 Microsoft Access 数据库的 foreach 循环,但我不知道如何对有值或无值的特定列求和,并将表最后一行中的总和显示为“总计”。

这是我的代码:

$sql = "SELECT EmployeeName, BasisSalary, Bonus FROM tableEmployee";

if ($result = $connectdb->query($sql)) 

    $rows = '';             
    echo '<table>';   

    foreach($result->fetchAll(PDO::FETCH_ASSOC) as $row) 
                     
        $heading = '';          
        $rows .= '<tr>'; 

        foreach($row as $key => $value) 
        
            $limitwords = substr($value, 0,50);
            $heading .= '<th>'.$key.'</th>';
            $rows .= '<td>' . $limitwords . '</td>';
        

        $rows .= '</tr>';
    

    echo '<tr>'.$heading.'</tr>';
    echo $rows;

    echo '</table>';

我上面的代码将显示如下输出:

|EmployeeName|BasicSalary| Bonus |
|     A      |   10.00   | 10.00 |
|     B      |   20.00   | 10.00 |
|     C      |   30.00   | 10.00 |

所以我想将总计显示为表格的最后一行,如下所示:

|EmployeeName|BasicSalary| Bonus |
|     A      |   10.00   | 10.00 |
|     B      |   20.00   | 10.00 |
|     C      |   30.00   | 10.00 | 
|      Total |   60.00   | 30.00 |

【问题讨论】:

【参考方案1】:

保留两个变量 $totalBasicSalary$totalBonus 以添加基本工资和奖金这两个字段的总数。

修改代码:

$sql = "SELECT EmployeeName, BasisSalary, Bonus FROM tableEmployee";

if ($result = $connectdb->query($sql)) 
    $totalBasicSalary = $totalBonus = 0;
    echo '<table> '
    . ' <tr>'
    . '<th>EmployeeName</th>'
    . '<th>BasisSalary</th>'
    . '<th>Bonus</th>'
    . '</tr>';

    foreach ($result->fetchAll(PDO::FETCH_ASSOC) as $row) 
        echo '<tr>'
        . '<td>' . substr($row["EmployeeName"], 0, 50) . '</td>'
        . '<td>' . $row["BasisSalary"] . '</td>'
        . '<td>' . $row["Bonus"] . '</td>'
        . '</tr>';

        $totalBasicSalary += $row["BasisSalary"];
        $totalBonus += $row["Bonus"];
    

    echo '<tr>'
    . '<td>Total</td>'
    . '<td>' . $totalBasicSalary . '</td>'
    . '<td>' . $totalBonus . '</td>'
    . '</tr>'
    . '</table>';

【讨论】:

以上是关于使用 foreach 循环添加每列的总和并在表格底部显示每个总计的主要内容,如果未能解决你的问题,请参考以下文章

在excel里如何计算一列数字的总和?

excel表格中在每列的最后一格没有数据的地方自动求和

将每列中的值分配为该列的总和

我的表有多个列,我想获取每列中的值计数并在 postgresql 中分别显示每列的计数值

用 1 和 -1 填充 n x n 零矩阵的方法,使得每行和每列只能有一个 1 和 -1,并且每行和每列的总和为 0

如何对数据表中特定数据列的值求和