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

PHP实现合并同category的review_id输出目标JSON格式咨询

合并JSON中相同分类的review_id字段

首先得提醒你一下,你想要的那种同一个对象里有多个review_id键的格式是不符合JSON规范的——JSON对象不允许重复的键名,后面的键会直接覆盖前面的,实际应用中这种格式根本没法正常解析。正确的做法应该是把同一个分类下的所有review_id放到一个数组里,比如用review_ids作为键名,这样既符合规范又能实现你的需求。

下面是PHP里实现这个需求的具体代码:

// 假设这是你当前获取到的原始数据
$originalData = [
    ["category" => 142, "review_id" => 92],
    ["category" => 383, "review_id" => 353],
    ["category" => 203, "review_id" => 149],
    ["category" => 239, "review_id" => 355],
    ["category" => 239, "review_id" => 201],
    ["category" => 183, "review_id" => 59],
    ["category" => 183, "review_id" => 62]
];

// 用来按category分组的临时数组
$grouped = [];

foreach ($originalData as $item) {
    $cat = $item['category'];
    $reviewId = $item['review_id'];
    
    if (isset($grouped[$cat])) {
        // 如果该分类已经存在,就把当前review_id追加到数组里
        $grouped[$cat]['review_ids'][] = $reviewId;
    } else {
        // 第一次遇到这个分类,初始化条目
        $grouped[$cat] = [
            'category' => $cat,
            'review_ids' => [$reviewId]
        ];
    }
}

// 把关联数组转成索引数组,再输出JSON
$result = array_values($grouped);
echo json_encode($result, JSON_PRETTY_PRINT);

运行这段代码后,输出的JSON格式会是这样的:

[
    {
        "category": 142,
        "review_ids": [
            92
        ]
    },
    {
        "category": 383,
        "review_ids": [
            353
        ]
    },
    {
        "category": 203,
        "review_ids": [
            149
        ]
    },
    {
        "category": 239,
        "review_ids": [
            355,
            201
        ]
    },
    {
        "category": 183,
        "review_ids": [
            59,
            62
        ]
    }
]

这个格式既满足了你合并同分类review_id的需求,又完全符合JSON规范,后续前端或者其他服务解析的时候也不会出问题。

内容的提问来源于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 07:34:15