EDIT: There’s array_chunk, which does just that.
Well, I didn’t feel like debugging, so I wrote a version with array_reduce:
$pergroup = 2;
$redfunc = function ($partial, $elem) use ($pergroup) {
$groupCount = count($partial);
if ($groupCount == 0 || count(end($partial)) == $pergroup)
$partial[] = array($elem);
else
$partial[$groupCount-1][] = $elem;
return $partial;
};
$arr = array(1,2,3,4,5);
print_r(array_reduce($arr, $redfunc, array()));
gives
Array
(
[0] => Array
(
[0] => 1
[1] => 2
)
[1] => Array
(
[0] => 3
[1] => 4
)
[2] => Array
(
[0] => 5
)
)