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

PHP中如何将变量存储的JSON对象拆分为多个独立JSON对象

PHP拆分JSON对象实现方案

注意:你提供的原始JSON存在语法错误(每个items节点后多了多余的逗号、数组元素闭合不规范),直接调用PHP解析函数会报错,需要先修正语法后再处理

实现逻辑

  • 用json_decode()把原始JSON字符串解析为PHP数组
  • 遍历results数组,逐个提取id字段、items字段
  • 用json_encode()把单独的items字段转回格式化的JSON字符串
  • 可以根据需求把结果存为动态变量或者数组,数组管理更稳妥不会出现变量名冲突

完整可运行代码

<?php
// 修正语法后的原始JSON字符串
$originalJson = <<<JSON
{
   "results":[
      {
         "id":"001",
         "items":{
            "item11":"value1",
            "item12":"value2",
            "item13":"value3"
          }
      },
      {
         "id":"002",
         "items":{
            "item21":"value1",
            "item22":"value2",
            "item23":"value3"
          }
      },
      {
         "id":"003",
         "items":{
            "item31":"value1",
            "item32":"value2",
            "item33":"value3"
          }
      }
   ]
}
JSON;

// 解析JSON为关联数组
$parseData = json_decode($originalJson, true);
// 校验解析结果
if (json_last_error() !== JSON_ERROR_NONE) {
    die('JSON解析失败:' . json_last_error_msg());
}

// 方式1:生成动态变量(符合你要求的$id1、$id2命名格式)
foreach ($parseData['results'] as $key => $value) {
    $idVarName = 'id' . ($key + 1);
    $itemJsonVarName = 'itemJson' . ($key + 1);
    // 赋值id变量
    $$idVarName = $value['id'];
    // 赋值items对应的格式化JSON,JSON_PRETTY_PRINT用于格式化输出
    $$itemJsonVarName = json_encode($value['items'], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    
    // 测试输出
    echo '$' . $idVarName . ' = "' . $$idVarName . '";' . PHP_EOL . PHP_EOL;
    echo $$itemJsonVarName . PHP_EOL . PHP_EOL;
}

// 方式2:用数组存储(更推荐,便于后续批量处理)
$processedData = [];
foreach ($parseData['results'] as $value) {
    $processedData[] = [
        'id' => $value['id'],
        'item_json' => json_encode($value['items'], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)
    ];
}
?>

输出效果

运行上述代码后会直接输出你要求的格式:

$id1 = "001";

{
    "item11": "value1",
    "item12": "value2",
    "item13": "value3"
}

$id2 = "002";

{
    "item21": "value1",
    "item22": "value2",
    "item23": "value3"
}

$id3 = "003";

{
    "item31": "value1",
    "item32": "value2",
    "item33": "value3"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 00:45:03