<?php
function permute($base, $add)
{
$result = [];
if (count($base) > 0) {
foreach ($base as $val1) {
if (count($add) > 0) {
foreach ($add as $val2) {
$result[] = array_merge($val1, $val2);
}
} else {
$result = $base;
}
}
} else {
$result = $add;
}
return $result;
}
function getPermutations(array $optionSet)
{
$stuff = [];
$permutations = [];
$index = 0;
foreach ($optionSet as $key => $set) {
$stuff[$index] = [];
foreach ($set as $code => $name) {
array_push($stuff[$index], [$key => $code]);
}
$index++;
}
$count = count($stuff);
for ($i = 0; $i < $count; $i++) {
$temp = array_map(
[
$this,
"permute",
],
[$permutations],
[$stuff[$i]]
);
$permutations = $temp[0];
}
return $permutations;
}
$options = [
'Condition' => [
'nm' => 'Near Mint/Mint',
'sp' => 'Slightly Played',
'hp' => 'Heavily Played'
],
'Style' => [
'normal' => 'Normal',
'foil' => 'Foil'
]
];
var_dump(getPermutations($options));
preferences:
46.76 ms | 402 KiB | 5 Q