很好用的一个函数
/**
* 把数组自动按数量分组
* @param array $array 要分割的数组
* @param int $groupNum 分的组数
*/
function splitArray($array, $groupNum)
{
if (empty($array)) {
return array();
}
//数组的总长度
$allLength = count($array);
//个数
$groupNum = intval($groupNum);
//开始位置
$start = 0;
//分成的数组中元素的个数
$enum = (int)($allLength / $groupNum);
//结果集
$result = array();
if ($enum > 0) {
//被分数组中 能整除 分成数组中元素个数 的部分
$firstLength = $enum * $groupNum;
$firstArray = array();
for ($i = 0; $i < $firstLength; $i++) {
array_push($firstArray, $array[$i]);
unset($array[$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], $array[$i + $firstLength]);
}
} else {
for ($i = 0; $i < $allLength; $i++) {
$result[] = array_slice($array, $i, 1);
}
}
return $result;
}
测试1-50分3组
$arr = range(1, 50);
print_r(splitArray($arr, 3));
结果
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
[10] => 11
[11] => 12
[12] => 13
[13] => 14
[14] => 15
[15] => 16
[16] => 49
)
[1] => Array
(
[0] => 17
[1] => 18
[2] => 19
[3] => 20
[4] => 21
[5] => 22
[6] => 23
[7] => 24
[8] => 25
[9] => 26
[10] => 27
[11] => 28
[12] => 29
[13] => 30
[14] => 31
[15] => 32
[16] => 50
)
[2] => Array
(
[0] => 33
[1] => 34
[2] => 35
[3] => 36
[4] => 37
[5] => 38
[6] => 39
[7] => 40
[8] => 41
[9] => 42
[10] => 43
[11] => 44
[12] => 45
[13] => 46
[14] => 47
[15] => 48
)
)
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.ihulang.com/index/info/12.html