Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Foreach循环从数据库计算和_Php_Mysql_Foreach_Sum - Fatal编程技术网

PHP Foreach循环从数据库计算和

PHP Foreach循环从数据库计算和,php,mysql,foreach,sum,Php,Mysql,Foreach,Sum,我想问你们所有更有经验的程序员,我将如何从我的数据库中获取一个值,该值存储为双精度 变量定时和超时 然后计算两列的总和 foreach ($result as $row) { echo '<tr><td>' . $row['username'] . '</td> <td>' . $row['date'] . '</td> <td>' . $row['jobnumber'] . '<

我想问你们所有更有经验的程序员,我将如何从我的数据库中获取一个值,该值存储为双精度

变量定时和超时

然后计算两列的总和

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>';


}
非常感谢你的帮助

泰勒

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

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

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');
$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>';
但是,如果不需要首先显示表中的所有行,那么最好的解决方案是使用SQL获取总和。
例如,如果您的数据不是来自数据库,而无法使用SQL,则Eternal1的答案是一个很好的选择。而且它非常干净。

当您想显示一个包含每一行的表,然后显示包含总和的最后一行时,您只需使用现有的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>';
但是,如果不需要首先显示表中的所有行,那么最好的解决方案是使用SQL获取总和。
例如,如果您的数据不是来自数据库,而无法使用SQL,则Eternal1的答案是一个很好的选择。而且它非常干净。

我会用SQL而不是PHP

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

我会用SQL而不是PHP来实现

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

$sum=$row['foo']+$row['bar']?这只是一个简单的加法…我会用SQL而不是PHP来完成。从表中选择用户名、日期、工号、客户、工作地点、职责、正常时间、加班、加班`+regulartime作为总时间;是否要添加包含总和的最后一行?@MarcB我想在这两行的底部添加最后一行以显示sumso放置回显总计:$sum在循环完成后。$sum=$row['foo']+$row['bar']?这只是一个简单的加法…我会用SQL而不是PHP来完成。从表中选择用户名、日期、工号、客户、工作地点、职责、正常时间、加班、加班`+regulartime作为总时间;是否要添加包含总和的最后一行?@MarcB我想在这两行的底部添加最后一行,以显示sumso,并在循环完成后放置一个echo Total:$sum。