Partition an array into N groups
Split a list into p slices, spreading the remainder across the first groups.
18th August 2026
function partition_array($list, $p)
{
$list_length = count($list);
$partition_length = floor($list_length / $p);
$partition_remainder = $list_length % $p;
$partition = array();
$mark = 0;
for ($px = 0; $px < $p; $px++) {
$increment = ($px < $partition_remainder) ? $partition_length + 1 : $partition_length;
$partition[$px] = array_slice($list, $mark, $increment);
$mark += $increment;
}
return $partition;
}