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

PHP渲染HTML表格时合并相同Mob值行单元格的实现方法

PHP结合PDO实现Bootstrap掉落表同怪物编号单元格跨行合并

核心实现逻辑

  • 原查询语句必须追加ORDER BY Mob排序,保证相同怪物编号的记录在结果集中连续排列,否则合并会出现排版错乱
  • 先遍历一次全量结果集,统计每个怪物编号对应的掉落记录总条数,作为单元格rowspan属性的值
  • 遍历渲染表格行时,记录上一次已经渲染过的怪物编号,仅当遍历到新的怪物编号时,才输出带跨行属性的怪物编号单元格,同组后续行直接跳过该列的输出即可

可直接复用的代码示例

<?php
// 沿用你现有PDO连接配置即可,无需修改原有连接逻辑
$pdo = new PDO('你的数据库连接DSN', '数据库账号', '数据库密码', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
]);

// 修改原查询语句,增加Mob字段排序
$stmt = $pdo->query("SELECT * FROM drop_default ORDER BY Mob ASC");
$dropData = $stmt->fetchAll();

// 预统计每个Mob对应的记录行数
$mobSpanMap = [];
foreach ($dropData as $row) {
    $mobSpanMap[$row->Mob] = isset($mobSpanMap[$row->Mob]) ? $mobSpanMap[$row->Mob] + 1 : 1;
}

// 初始化标记,记录上一次渲染过的Mob值
$lastMob = null;
?>

<!-- Bootstrap表格结构,可直接适配你原有样式 -->
<table class="table table-bordered table-hover">
    <thead class="table-light">
        <tr>
            <th>Mob(怪物编号)</th>
            <th>Item(物品编号)</th>
            <th>Count(掉落数量)</th>
            <th>Drop Chance(掉落概率)</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($dropData as $drop): ?>
        <tr>
            <?php if ($drop->Mob !== $lastMob): ?>
            <td rowspan="<?= $mobSpanMap[$drop->Mob] ?>"><?= htmlspecialchars($drop->Mob) ?></td>
            <?php $lastMob = $drop->Mob; ?>
            <?php endif; ?>
            <td><?= htmlspecialchars($drop->Item) ?></td>
            <td><?= htmlspecialchars($drop->Count) ?></td>
            <td><?= htmlspecialchars($drop->DropChance) // 字段名请和你实际表结构保持一致 ?></td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

注意事项

  • 所有从数据库读取输出到HTML的内容,必须用htmlspecialchars()做转义处理,避免XSS安全漏洞
  • 不需要给同组非首行输出空的<td>占位,rowspan属性会自动让单元格占据对应行数,手动输出空td反而会导致表格列数错位
  • 如果需要叠加其他排序规则(比如按掉落概率从高到低排),直接在ORDER BY后追加规则即可,只要保证相同Mob的记录连续就不会影响合并效果
  • 如果结果集为空,可以在遍历前加判断输出“暂无掉落数据”的提示行,避免表格空态异常

内容的提问来源于stack exchange,提问作者George Zeimpekis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:27:35