如何按照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); ?>
逻辑说明
- 预定义分组规则数组
$rules,对应需求的循环模式 - 用
$currentPosition追踪原数组的处理进度,避免重复读取元素 - 通过
$ruleIndex % count($rules)实现规则的循环复用,不会出现索引越界问题 - 用
array_slice精准切割对应长度的元素组,即使原数组剩余元素不足规则长度,也会自动取剩余所有元素生成分组
内容的提问来源于stack exchange,提问作者Yogesh Saroya
相关产品推荐
相关产品推荐

