Skip to content

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;
}