/**
* 根据指定个数,为数组分组
* $arr 原始数据
* $num 分几组
*/
function ArrayGroup ($arr, $num) {
// 原始数据
# $arr = [1,4,5,2,10,"李某","你吃了吗?","斗破苍穹",111,123,1,5,6,111,123,111,123];
$arr = $arr;
// 分几组
$count = count($arr)/$num;
// 数组总个数
$allLength = count($arr);
// 每组的个数,这里可以根据需求,为个数设置四舍五入等。下面程序支持小数
$groupNum = $count;
//开始位置
$start = 0;
//可以分成几组
$enum = (int)($allLength/$groupNum);
//结果集
$result = [];
if($enum > 0){
// 被分数组中,能整除,分成数组中元素个数的部分
$firstLength = $enum * $groupNum;
$firstArray = [];
for($i=0; $i<$firstLength; $i++){
array_push($firstArray, $arr[$i]);
unset($arr[$i]);
}
for($i=0; $i<$groupNum; $i++){
//从原数组中的指定开始位置和长度 截取元素放到新的数组中
$result[] = array_slice($firstArray, $start, $enum);
//开始位置加上累加元素的个数
$start += $enum;
}
//数组剩余部分分别加到结果集的前几项中
$secondLength = $allLength - $firstLength;
for($i=0; $i<$secondLength; $i++){
array_push($result[$i], $arr[$i + $firstLength]);
}
}else{
for($i=0; $i<$allLength; $i++){
$result[] = array_slice($arr, $i, 1);
}
}
return $result;
}
结果:
array:3 [
0 => array:8 [
0 => 1
1 => 4
2 => 5
3 => 2
4 => 10
5 => "李某"
6 => "你吃了吗?"
7 => "斗破苍穹"
]
1 => array:8 [
0 => 111
1 => 123
2 => 1
3 => 5
4 => 6
5 => 111
6 => 123
7 => 111
]
2 => array:1 [
0 => 123
]
]