generating a series of sequential arrays of version-like values in php

This is a recursive function that will generate each of the combinations of the ranges up to the maximum value, with elements in each array from 1 to the number specified:

function generate($elements, $maxvalue) {
    if ($elements == 0) return array();
    $result = array();
    foreach (range(1, $maxvalue) as $el) {
        $result[] = array($el);
    }
    foreach (range(1, $maxvalue) as $el) {
        foreach (generate($elements - 1, $maxvalue) as $arr) {
            $result[] = array($el, ...$arr);
        }
    }
    return $result;
}

$combs = generate(3, 3);

Output is too long to show here but can be seen in this demo on 3v4l.org

Note for PHP < 7.4, replace

$result[] = array($el, ...$arr);

with

$result[] = array_merge(array($el), $arr);

CLICK HERE to find out more related problems solutions.

Leave a Comment

Your email address will not be published.

Scroll to Top