繁体   English   中英

PHP Foreach从数据库循环计算总和

[英]PHP Foreach loop from database to calculate sum

我想知道的是,对于所有经验丰富的编码人员,我将如何从我的数据库中获取一个值,该值存储为double

(变量定期和加班)

然后计算两列中每列的总和。

foreach ($result as $row) {
    echo '<tr><td>' . $row['username'] . '</td>
        <td>' . $row['date'] . '</td>
        <td>' . $row['jobnumber'] . '</td>
        <td>' . $row['customer'] . '</td>
        <td>' . $row['worksite'] . '</td>
        <td>' . $row['duties'] . '</td>
        <td>' . $row['regulartime'] . '</td>
        <td>' . $row['overtime'] . '</td></tr>';


}

非常感谢你的帮助。

泰勒

编辑我想在两个的底部添加最后一行以显示总和

function calculateSum(array $data, $field)
{
    return array_reduce(
        $data,
        function ($result, $elem) use ($field) {
            return $result + $elem[$field];
        }, 0
    );
}

calculateSum($result, 'regulartime');
calculateSum($result, 'overtime');

要显示包含每一行的表,然后显示包含总和的最后一行,则只需使用现有的foreach循环来增加总数:

$totalRegularTime = 0;
$totalOverTime = 0;

foreach ($result as $row) {
    echo '<tr><td>' . $row['username'] . '</td>
        <td>' . $row['date'] . '</td>
        <td>' . $row['jobnumber'] . '</td>
        <td>' . $row['customer'] . '</td>
        <td>' . $row['worksite'] . '</td>
        <td>' . $row['duties'] . '</td>
        <td>' . $row['regulartime'] . '</td>
        <td>' . $row['overtime'] . '</td></tr>';

    $totalRegularTime += $row['regulartime'];
    $totalOverTime += $row['overtime'];
}

echo '<tr><td colspan="6">TOTAL</td>
    <td>' . $totalRegularTime . '</td>
    <td>' . $totalOverTime . '</td></tr>';



但是,如果不需要首先显示table所有行,最好的解决方案是使用SQL获取总和。
如果您不能使用SQL(例如,您的数据不是来自数据库),则Eternal1的答案是一个很好的选择。 而且很干净。

我会在SQL中而不是在PHP中做到这一点。

SELECT username, date, jobnumber, customer, worksite, duties, regulartime, overtime, (overtime + regulartime) as totaltime FROM table;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM