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

如何按照3、3、1、1、2、2的重复规则对数组进行切片

按重复分组规则切割数组

需求明确:将一维数组按照3个、3个、1个、1个、2个、2个的规则循环分组,直到所有元素处理完毕,最终得到二维数组。

PHP 实现代码

<?php
$arr = ['val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7', 'val8', 'val9', 'val10', 'val11', 'val12', 'val13', 'val14', 'val15', 'val16', 'val17', 'val18', 'val19', 'val20', 'val21', 'val22', 'val23', 'val24'];
$result = [];
// 定义重复的分组规则
$rules = [3, 3, 1, 1, 2, 2];
$ruleIndex = 0;
$totalElements = count($arr);
$currentPosition = 0;

while ($currentPosition < $totalElements) {
    // 获取当前要取的元素个数
    $take = $rules[$ruleIndex % count($rules)];
    // 切割数组,从当前位置取take个元素
    $group = array_slice($arr, $currentPosition, $take);
    $result[] = $group;
    // 更新当前处理位置
    $currentPosition += $take;
    // 移动规则索引,实现循环复用规则
    $ruleIndex++;
}

// 打印结果验证
print_r($result);
?>

逻辑说明

  1. 预定义分组规则数组$rules,对应需求的循环模式
  2. 用$currentPosition追踪原数组的处理进度,避免重复读取元素
  3. 通过$ruleIndex % count($rules)实现规则的循环复用,不会出现索引越界问题
  4. 用array_slice精准切割对应长度的元素组,即使原数组剩余元素不足规则长度,也会自动取剩余所有元素生成分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:22:27