Я просто не могу понять, как решить эту проблему, и после тщательного поиска в Google без результатов я обращаюсь к вам с надеждой на решение.
Учитывая образец массива ниже:
array(
'Type' => array(
'Toppe',
'Bukser_og_Jeans'
),
'Size' => array(
'Extra_small',
'Small'
),
'Colour' => array(
'Rod'
)
)
(Примечание. Это всего лишь пример; в реальной ситуации может быть меньше / больше групп и / или элементов на группу)
Как бы я закончил со следующим результатом?
Toppe,Extra_small,Rod
Toppe,Small,Rod
Bukser_og_Jeans,Extra_small,Rod
Bukser_og_Jeans,Small,Rod
Это поиск по продукту, и API допускает только ОДНО значение «уточнения» из каждой группы «Тип», «Размер» и «Цвет» для каждого запроса, но мое назначение требует запрашивать и объединять результаты нескольких запросов API.
Я думаю , что для этого мне нужна какая-то рекурсивная функция, но я не смог даже создать какой-либо код, близкий к моему ожидаемому результату.
Все, что я смог найти в Google, - это перестановки букв или даже строк, но там, где людям нужно, например. «Красный, синий, зеленый», «синий, красный, зеленый», «зеленый, красный, синий» и т. Д., Что, разумеется, не то, что я ищу.
Я надеюсь, что кто-то здесь понимает, что я хочу сделать, и знает, как это сделать.
РЕДАКТИРОВАТЬ: Решение, опубликованное @ikegami, преобразованное в PHP:
$iter = 0;
while (1) {
$num = $iter++;
$pick = array();
foreach ($refinements as $refineGroup => $groupValues) {
$r = $num % count($groupValues);
$num = ($num - $r) / count($groupValues);
$pick[] = $groupValues[$r];
}
if ($num > 0) {
break;
}
print join(', ', $pick)."\n";
}