由于最近业务场景的需要,写了一个蛮实用的数组算法,分享给有需要的朋友们。
更多实用数组算法方法 请访问 https://github.com/120064921/php_collection_query
/**
* 数组分段 | 把n个元素的二维数组重新拼装成一个每(指定数量)个二维数组为一个元素的三维数组
*
* @param array $array 数组
* @param int $granularity 粒度数量
* @return array
*/
public function array_section($granularity, $array=[])
{
$total_num = count($array);
if ($total_num <= $granularity){
$arrs[] = $array;
}else{
$arrs = [];
$pointer = 0;
foreach ($array as $k1 => $v1) {
$arr[$pointer] = $v1;
if ((($pointer+1) % $granularity) == 0){
$arrs[] = $arr;
unset($arr);
}
unset($array[$k1]);
if (count($array) == $total_num % $granularity && !empty($array)){
$arrs[] = $array;
break;
}
$pointer ++;
}
}
return $arrs;
}