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

如何用PHP提取JSON嵌套对象数据并填充表格?

解决PHP解析JSON后无法遍历家具对象的问题

嘿,我来帮你搞定这个问题!你现在的情况应该是只遍历了解析后的最外层数组,没深入到data字段里的家具对象集合,所以才只看到key: data和value: Array。咱们一步步来解决:

第一步:确认你的JSON结构

首先先确认下你的test.JSON是不是类似这样的结构(根据你的描述还原的):

{
  "data": {
    "Chair": {"id": 1, "key": "chair", "name": "Chair", "title": "实木椅子"},
    "Table": {"id": 2, "key": "table", "name": "Table", "title": "长方形餐桌"},
    "Closet": {"id": 3, "key": "closet", "name": "Closet", "title": "两门衣柜"},
    "Sofa": {"id": 4, "key": "sofa", "name": "Sofa", "title": "三人布艺沙发"}
  },
  "type": "furniture",
  "version": "1.0"
}

第二步:正确读取并解析JSON

你已经用file_get_contents和json_decode了,这里再强调下json_decode的第二个参数true必须加,这样才能转成关联数组方便操作:

// 读取JSON文件,注意路径要正确
$jsonContent = file_get_contents('test.JSON');
// 解析为关联数组,第二个参数true是关键
$furnitureData = json_decode($jsonContent, true);

// 可以加个错误排查,避免文件读不到或者JSON格式错了
if (!$jsonContent) {
    die("糟了,读不到test.JSON文件!检查下文件路径是不是对的");
}
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON解析出错啦:" . json_last_error_msg());
}

第三步:深入遍历data里的家具对象

你之前应该是直接遍历了整个$furnitureData数组,所以只拿到了外层的data、type、version这几个键。咱们得先取出data字段里的家具集合,再遍历每个家具对象:

方式1:遍历每个家具并输出属性

// 先把data里的家具集合取出来
$furnitureItems = $furnitureData['data'];

// 循环遍历每个家具
foreach ($furnitureItems as $furnitureKey => $furniture) {
    echo "家具类型:{$furnitureKey}<br>";
    echo "ID:{$furniture['id']}<br>";
    echo "Key:{$furniture['key']}<br>";
    echo "Name:{$furniture['name']}<br>";
    echo "Title:{$furniture['title']}<br><br>";
}

方式2:直接填充自定义表格

这应该是你最终想要的效果,结合HTML表格来生成:

// 开始构建表格
echo "<table border='1' cellpadding='8' cellspacing='0'>";
// 表头
echo "<tr>
        <th>ID</th>
        <th>Key</th>
        <th>Name</th>
        <th>Title</th>
      </tr>";

// 循环每个家具对象,生成表格行
foreach ($furnitureItems as $furniture) {
    echo "<tr>
            <td>{$furniture['id']}</td>
            <td>{$furniture['key']}</td>
            <td>{$furniture['name']}</td>
            <td>{$furniture['title']}</td>
          </tr>";
}

echo "</table>";

可能的坑要注意

  • 如果你的data字段是数组格式(比如"data": [{"id":1,...}, {...}]),那遍历的时候直接循环$furnitureData['data']就行,不需要额外处理键名;
  • 一定要确保JSON格式是正确的,比如引号都是双引号,逗号没漏也没多,不然json_decode会失败;
  • 文件路径要对,如果test.JSON不在当前PHP脚本的目录下,记得写绝对路径或者相对路径。

这样应该就能顺利提取每个家具的属性并填充表格啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:34:16