3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); error_reporting(-1); ini_set('display_errors', 'On'); function pwr(array $elements, int $k, int $idx = 0, array &$result = []): \Generator { foreach ($elements as $element) { $result[$idx] = $element; if ($k - $idx > 1) { yield from pwr($elements, $k, $idx + 1, $result); } else { yield $result; } } } function gen(array $keys, array $values): \Generator { foreach (pwr($values, \count($keys)) as $set) { yield array_combine($keys, $set); } } foreach (gen(range('a', 'j'), [true, false]) as $case) { foreach ($case as $k => $v) { echo $v ? $k : '_'; } echo "\n"; }

preferences:
49.41 ms | 402 KiB | 5 Q