PHP多维数组中如何按fb_id将子数组数量限制为5?
解决方案
嘿,这里有个简单的PHP实现方案,能帮你把每个fb_id对应的子数组限制最多5个:
// 你的原始多维数组 $originalArray = [ ['id' => 5925, 'fb_id' => 123, 'description' => '', 'video' => '', 'thum' => ''], ['id' => 7060, 'fb_id' => 2344, 'description' => '', 'video' => '', 'thum' => ''], ['id' => 6579, 'fb_id' => 123, 'description' => '', 'video' => ''], // 可以添加更多测试数据,比如fb_id=123的第4、5、6个条目,测试限制效果 ]; // 第一步:按fb_id分组,同时限制每组最多5个条目 $groupedItems = []; foreach ($originalArray as $item) { $fbId = $item['fb_id']; // 如果该fb_id的分组不存在,或者还没到5个,就添加当前条目 if (!isset($groupedItems[$fbId]) || count($groupedItems[$fbId]) < 5) { $groupedItems[$fbId][] = $item; } } // 第二步:把分组后的数组重新合并成一维数组 $finalArray = []; foreach ($groupedItems as $items) { $finalArray = array_merge($finalArray, $items); } // 查看结果 print_r($finalArray);
逻辑说明
- 分组限制:遍历原始数组时,用
fb_id作为分组的键,每次添加前检查该分组的条目数是否小于5,这样就能确保每个fb_id最多保留5个子数组,而且是按原始数组中出现的顺序保留前5个。 - 合并数组:把分组后的二维数组重新合并成一维,得到符合要求的最终输出。
扩展优化
如果你的需求是保留每个fb_id对应的最新5条数据(比如按id倒序),可以先对原始数组排序,再执行上面的分组逻辑:
// 按id降序排序,让最新的条目排在前面 usort($originalArray, function($a, $b) { return $b['id'] - $a['id']; }); // 之后再执行分组和合并步骤即可
内容的提问来源于stack exchange,提问作者Wewillgrow
相关产品推荐
相关产品推荐

