Skip to content

Partition an Array Into N Groups

Split a list into p slices of roughly equal size, spreading any remainder across the first groups so lengths differ by at most one.

Language: PHP

Added on: 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;
}