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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 07:07:28