3v4l.org

run code in 300+ PHP versions simultaneously
<?php function generate(int $elementsCount, int $maxValue, array $current = []): \Generator { for ($value = 1; $value <= $maxValue; $value++) { yield [...$current, $value]; } if ($elementsCount > 1) { for ($value = 1; $value <= $maxValue; $value++) { yield from generate($elementsCount - 1, $maxValue, [...$current, $value]); } } } print_r(iterator_to_array(generate(3, 3), false));

preferences:
27.18 ms | 405 KiB | 5 Q