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

如何用PHP将JSON数据转为动态HTML表格并提取JSON键作为表头

解决PHP将嵌套JSON转为动态HTML表格的问题

我来帮你搞定这个动态表格的需求!你现在的代码只输出了数据值,但没处理JSON里的嵌套结构,也没生成动态表头。咱们一步步调整代码,实现你要的效果:

核心思路

你的JSON存在嵌套层级(data->network),所以首先要把嵌套的键值对和顶层的键值对合并成一个一维数组,这样就能轻松提取表头(所有键)和对应数据(所有值)了。

修改后的完整代码

<?php
$Libs = new Library();
$result = $Libs->pilihmodel($idbrand,$idmodel);

if ($result->rowCount() > 0) {
    // 初始化表格基础结构,表头仅输出一次
    echo "<table border='1'>";
    $isFirstRow = true;

    while ($datas = $result->fetch(PDO::FETCH_OBJ)) {
        $datass = $datas->jsondetail;
        $hasiljson = json_decode($datass, TRUE);

        // 扁平化JSON:合并顶层数据与嵌套的network数据
        $flatData = [
            'status' => $hasiljson['status'],
            'title' => $hasiljson['title'],
            'img' => $hasiljson['img'],
            ...$hasiljson['data']['network'] // 展开network下的所有键值对
        ];

        // 首次循环输出表头
        if ($isFirstRow) {
            echo "<thead><tr>";
            foreach (array_keys($flatData) as $header) {
                echo "<th>" . htmlspecialchars($header) . "</th>";
            }
            echo "</tr></thead>";
            $isFirstRow = false;
        }

        // 输出数据行
        echo "<tbody><tr>";
        foreach ($flatData as $value) {
            echo "<td>" . htmlspecialchars($value) . "</td>";
        }
        echo "</tr></tbody>";
    }
    echo "</table>";
}
?>

代码细节解释

  1. 扁平化JSON:用...展开运算符把data->network里的所有键值对合并到顶层数组,得到包含所有目标键值对的一维数组$flatData,方便后续处理。
  2. 动态表头生成:通过array_keys($flatData)提取所有键作为表头,仅在第一次循环时输出一次(如果需要每条记录单独生成表格,可将表头代码移到while循环内部)。
  3. 安全输出处理:用htmlspecialchars()转义内容,避免XSS风险和HTML格式混乱问题。
  4. 规范表格结构:用<thead>和<tbody>区分表头与数据区域,让表格结构更符合HTML标准。

示例JSON的输出效果

针对你提供的示例JSON,生成的表格会是这样的:

statustitleimgtechnology2g_bandsgprsedge
suksesOKok.jpgNo cellular connectivityN/ANoNo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 06:42:31