You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 05:24:04