如何提取数据库HOURS列数据存入数组并按对应位置累加求和
实现同位置HOURS累加的解决方案
你现有代码的核心问题有两个:
- 循环内每次直接覆盖
$hours变量,没有做累加处理 - explode方法拆分的目标值写错了,应该拆分查询结果行里的HOURS字段,而不是还没赋值的
$hours变量
你可以按以下逻辑实现:
- 循环外提前初始化一个和HOURS字段元素数量一致的全0数组,用于存储对应位置的累加结果
- 循环内拆分每一行的HOURS字段值,遍历每个位置和累加数组的对应下标值相加
- 循环结束后直接输出累加数组即可
完整代码示例:
// 初始化累加数组,4个元素对应HOURS的4个位置,初始值都是0 $totalHours = array_fill(0, 4, 0); while($row = sqlsrv_fetch_object($result)) { // 拆分当前行的HOURS字段为数组 $currentHours = explode(', ', $row->HOURS); // 遍历每个位置累加 foreach($currentHours as $index => $val) { $totalHours[$index] += (int)$val; } } // 输出结果,比如你要的HTML表格格式 echo '<table><tr><td>TOTAL HOURS</td>'; foreach($totalHours as $hour) { echo "<td>$hour</td>"; } echo '</tr></table>';
运行上述代码后$totalHours的值就是你需要的[14,15,22,14],输出的HTML表格也符合要求。
内容的提问来源于stack exchange,提问作者JDeLeon
相关产品推荐
相关产品推荐

