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

如何用PHP合并两个JSON数组并按category字段整合数据?

合并JSON数组并按category整合字段

我来帮你搞定这个需求,核心思路是用category值作为临时数组的键,这样就能快速定位到相同分类的条目,把两个数组里的字段无缝整合到一起。下面是具体的PHP实现代码:

// 你的两个原始JSON字符串
$privateJson = '[{"category":183,"private_review_ids":[63,59,62]}, {"category":363,"private_review_ids":[331]}, {"category":371,"private_review_ids":[341]}, {"category":379,"private_review_ids":[350]}]';
$publicJson = '[{"category":363,"public_review_ids":[331]}, {"category":373,"public_review_ids":[343]}, {"category":384,"public_review_ids":[356]}, {"category":183,"public_review_ids":[347]}]';

// 将JSON转为PHP可操作的关联数组
$privateArray = json_decode($privateJson, true);
$publicArray = json_decode($publicJson, true);

// 创建临时数组,用category作为键来存储合并后的数据
$mergedData = [];

// 第一步:处理私有评论数组,初始化每个分类的基础结构
foreach ($privateArray as $item) {
    $category = $item['category'];
    $mergedData[$category] = [
        'category' => $category,
        'private_review_ids' => $item['private_review_ids']
    ];
}

// 第二步:处理公开评论数组,合并到对应分类中
foreach ($publicArray as $item) {
    $category = $item['category'];
    if (isset($mergedData[$category])) {
        // 如果该分类已存在,直接添加公开评论ID数组字段
        $mergedData[$category]['public_review_ids'] = $item['public_review_ids'];
    } else {
        // 如果分类不存在,新建包含公开评论的条目
        $mergedData[$category] = [
            'category' => $category,
            'public_review_ids' => $item['public_review_ids']
        ];
    }
}

// 将以category为键的关联数组转为普通索引数组(和原始结构一致)
$resultArray = array_values($mergedData);

// 可选:转回JSON格式输出
$finalJson = json_encode($resultArray, JSON_PRETTY_PRINT);
echo $finalJson;

代码逻辑说明:

  1. JSON转数组:用json_decode($json, true)把JSON字符串转成PHP关联数组,方便后续操作。
  2. 临时数组做映射:用$mergedData数组以category值为键,能快速定位到对应分类,避免嵌套循环查找,效率更高。
  3. 分步合并:先处理私有评论数组初始化结构,再遍历公开评论数组补充字段,确保每个分类的所有相关数据都被整合。
  4. 还原索引数组:用array_values()把关联数组转回普通索引数组,和你原始的数组结构保持一致。

运行后,你会得到符合预期的合并结果,比如category=183的条目会变成:

{"category":183,"private_review_ids":[63,59,62],"public_review_ids":[347]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:25:05