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。