如何用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>"; } ?>
代码细节解释
- 扁平化JSON:用
...展开运算符把data->network里的所有键值对合并到顶层数组,得到包含所有目标键值对的一维数组$flatData,方便后续处理。 - 动态表头生成:通过
array_keys($flatData)提取所有键作为表头,仅在第一次循环时输出一次(如果需要每条记录单独生成表格,可将表头代码移到while循环内部)。 - 安全输出处理:用
htmlspecialchars()转义内容,避免XSS风险和HTML格式混乱问题。 - 规范表格结构:用
<thead>和<tbody>区分表头与数据区域,让表格结构更符合HTML标准。
示例JSON的输出效果
针对你提供的示例JSON,生成的表格会是这样的:
| status | title | img | technology | 2g_bands | gprs | edge |
|---|---|---|---|---|---|---|
| sukses | OK | ok.jpg | No cellular connectivity | N/A | No | No |
内容的提问来源于stack exchange,提问作者Rakyat Medan
相关产品推荐
相关产品推荐

