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

如何将多个cURL响应合并为单个JSON?

合并多个JSON响应的PHP实现修改方案

当前你的PHP代码会依次请求多个接口并输出独立的JSON响应,现在需要将这些响应合并为两种指定格式之一,以下是对应的修改方案:

原代码问题分析

原代码仅将每个接口的原始JSON字符串存入数组后直接输出,导致多个独立JSON对象并存,无法满足合并需求。需要先将JSON解析为PHP数组,合并目标数据后再重新编码为JSON输出。


方案一:合并为包含统一成功状态的JSON结构

此方案将所有接口返回的obj数组合并到一个包含success、msg和合并后obj的JSON对象中:

<?php

$curlData = array(
  array(
    'url' => 'https://example.com/list',
    'cookie' => 'session=example'
  ),
  array(
    'url' => 'https://anotherdomain.com/list',
    'cookie' => 'session=another'
  ),
  // Add more domains and cookies as needed
);

// 初始化合并结果
$mergedResult = array(
    'success' => true,
    'msg' => '',
    'obj' => array()
);

foreach ($curlData as $data) {
  $curl = curl_init();

  curl_setopt_array($curl, array(
    CURLOPT_URL => $data['url'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => array(
      'Cookie: ' . $data['cookie']
    ),
  ));

  $response = curl_exec($curl);
  curl_close($curl);

  // 解析JSON为PHP数组
  $responseData = json_decode($response, true);
  if ($responseData && isset($responseData['obj']) && is_array($responseData['obj'])) {
      // 合并obj数组
      $mergedResult['obj'] = array_merge($mergedResult['obj'], $responseData['obj']);
  }
}

// 输出合并后的JSON
echo json_encode($mergedResult, JSON_PRETTY_PRINT);
?>

输出结果示例:

{
    "success": true,
    "msg": "",
    "obj": [
        {
            "id": 1,
            "remark": "D"
        },
        {
            "id": 159,
            "remark": "mssdss"
        },
        {
            "id": 14,
            "remark": "tttt"
        },
        {
            "id": 56,
            "remark": "ok"
        }
    ]
}

方案二:直接合并为元素数组

此方案将所有接口返回的obj数组元素直接合并为一个一维数组:

<?php

$curlData = array(
  array(
    'url' => 'https://example.com/list',
    'cookie' => 'session=example'
  ),
  array(
    'url' => 'https://anotherdomain.com/list',
    'cookie' => 'session=another'
  ),
  // Add more domains and cookies as needed
);

// 初始化合并数组
$mergedItems = array();

foreach ($curlData as $data) {
  $curl = curl_init();

  curl_setopt_array($curl, array(
    CURLOPT_URL => $data['url'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => array(
      'Cookie: ' . $data['cookie']
    ),
  ));

  $response = curl_exec($curl);
  curl_close($curl);

  // 解析JSON为PHP数组
  $responseData = json_decode($response, true);
  if ($responseData && isset($responseData['obj']) && is_array($responseData['obj'])) {
      // 合并元素
      $mergedItems = array_merge($mergedItems, $responseData['obj']);
  }
}

// 输出合并后的JSON数组
echo json_encode($mergedItems, JSON_PRETTY_PRINT);
?>

输出结果示例:

[
    {
        "id": 1,
        "remark": "D"
    },
    {
        "id": 159,
        "remark": "mssdss"
    },
    {
        "id": 14,
        "remark": "tttt"
    },
    {
        "id": 56,
        "remark": "ok"
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:23:15