なんかいいものないのかな?
配列を指定した数に分割する
<?php function divide2num($sum, $div) { if ($div == 0) { $div = 1; } $v = intval(floor($sum / $div)); $m = $sum % $div; if ($m <= 0) { return array_fill(0, $div, $v); } else { return array_merge(array_fill(0, $m, $v+1), array_fill(0, $div-$m, $v)); } } function divide_array($a, $div) { if (!is_array($a)) { $a = array($a); } $num = divide2num(count($a), $div); $offset = 0; $result = array(); foreach ($num as $n) { if ($n == 0) { break; } $result[] = array_slice($a, $offset, $n, true); $offset += $n; } return $result; } ?> $data = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10'); $div = 4; var_dump(divide_array($data, $div)); var_dump(divide_array(array(), $div)); array(4) { [0]=> array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" } [1]=> array(3) { [3]=> string(1) "4" [4]=> string(1) "5" [5]=> string(1) "6" } [2]=> array(2) { [6]=> string(1) "7" [7]=> string(1) "8" } [3]=> array(2) { [8]=> string(1) "9" [9]=> string(2) "10" } } array(0) { }