PHP合并SQL关联数组匹配行并在HTML中展示三列结果的实现问题
解决数组横向合并问题,实现三列数据展示
嘿,我完全懂你的困扰——array_merge()的作用是把两个数组纵向拼接(上下摞在一起),而不是你需要的横向合并对应行的字段。既然你明确说两个数组行数相同、且s1的键值是一一对应的,那我们可以通过循环遍历的方式,把每行的字段组合起来。
方法一:基于索引的循环合并
因为你的两个数组都是从0开始的连续索引,直接通过索引遍历就能匹配对应行:
// 初始化空的合并数组 $dataComb = []; // 先检查两个数组长度是否一致,避免索引越界 if (count($datas_a) !== count($datas_b)) { // 这里可以根据需求处理异常,比如抛出提示或记录日志 trigger_error("两个数组行数不匹配,无法完成合并", E_USER_WARNING); } else { // 遍历每个索引,合并对应行的字段 for ($i = 0; $i < count($datas_a); $i++) { $dataComb[$i] = [ 's1' => $datas_a[$i]['s1'], // s1从任意数组取都可以,因为对应 'duree_occu' => $datas_a[$i]['duree_occu'], 'duree_cours' => $datas_b[$i]['duree_cours'] ]; } }
方法二:foreach遍历(更简洁)
如果习惯用foreach,也可以这样写,效果是一样的:
$dataComb = []; if (count($datas_a) !== count($datas_b)) { trigger_error("数组行数不匹配", E_USER_WARNING); } else { foreach ($datas_a as $index => $rowA) { $rowB = $datas_b[$index]; $dataComb[] = [ 's1' => $rowA['s1'], 'duree_occu' => $rowA['duree_occu'], 'duree_cours' => $rowB['duree_cours'] ]; } }
后续HTML展示示例
合并完成后,你就可以在HTML里轻松生成三列表格了:
<table border="1"> <thead> <tr> <th>教室(s1)</th> <th>占用时长</th> <th>课程时长</th> </tr> </thead> <tbody> <?php foreach ($dataComb as $row): ?> <tr> <td><?php echo htmlspecialchars($row['s1']); ?></td> <td><?php echo htmlspecialchars($row['duree_occu']); ?></td> <td><?php echo htmlspecialchars($row['duree_cours']); ?></td> </tr> <?php endforeach; ?> </tbody> </table>
小贴士:用
htmlspecialchars()输出内容是为了防止XSS攻击,这是前端输出数据的最佳实践哦~
内容的提问来源于stack exchange,提问作者user16642310
相关产品推荐
相关产品推荐

