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

如何将数据库中的JSON数据渲染为表格格式及PHP代码问题排查

问题修复方案

原有代码问题点

  • 变量命名冲突:循环遍历$testList时的值变量用了$data,和外层存储原始数据的$data重名,会导致外层变量被覆盖
  • 分页逻辑错误:要实现每行3个issue_name、内容之间间隔空白列的效果,原有判断i%2==0的逻辑不符合需求
  • 尾部数据丢失:循环结束后,不足3个的剩余内容不会被拼接进表格,会出现数据遗漏
  • 初始变量未定义:$tdata没有在循环外提前声明,首次使用时会抛出PHP警告

修正后的代码

<?php
$testData = json_decode($data['test_data'], true);
$testList = $testData['list'] ?? []; // 增加空值判断避免报错
$rows = [];
$currentRow = [];
foreach ($testList as $i => $item) { // 改变量名为item避免和外层$data冲突
    $currentRow[] = htmlspecialchars($item['issue_name']); // 转义特殊字符避免XSS漏洞
    // 每攒够3个内容就生成一行
    if (count($currentRow) === 3) {
        $rows[] = '<td>' . implode('</td><td></td><td>', $currentRow) . '</td>';
        $currentRow = [];
    }
}
// 处理循环结束后剩余的不足3个的内容
if (!empty($currentRow)) {
    $rows[] = '<td>' . implode('</td><td></td><td>', $currentRow) . '</td>';
    // 如果需要剩余位置补空白td可以取消注释下面这段
    // $paddingCount = (3 - count($currentRow)) * 2 -1;
    // if ($paddingCount > 0) {
    //     $rows[count($rows)-1] .= str_repeat('<td></td>', $paddingCount);
    // }
}
// 输出表格
echo '<table border="1" cellpadding="10"><tr>' . implode('</tr><tr>', $rows) . '</tr></table>';

改动说明

  • 修复了变量命名冲突问题,避免外层原始数据被覆盖
  • 增加了空值判断和XSS转义,提升代码健壮性和安全性
  • 调整行生成逻辑为每3个内容生成一行,符合示例表格的排版规则
  • 新增尾部剩余内容的处理逻辑,避免数据丢失
  • 可选增加了剩余空白单元格补全逻辑,保证所有行的列数统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:06