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
相关产品推荐
相关产品推荐

