Jak zbudować funkcję rekurencyjną, aby wyświetlić listę wszystkich kombinacji macierzy wielopoziomowej?
Mam tablicę, która może zawierać dowolną liczbę elementów. Każdy element zawiera identyfikator i tablicę o nazwie „opcje” (również z dowolną liczbą elementów). Oto struktura:
$arr = array(
array('id' => 10, 'options' => array(3, 5)),
array('id' => 15, 'options' => array(2, 4, 8, 9)),
array('id' => 20, 'options' => array(2, 6, 7)),
// ... any number of elements
);
Chciałbym utworzyć inną macierz opartą na tej. Każdy klucz jest polem ID + wartością tablicy opcji, a wartość jest tablicą następnego elementu, a następnie następną i tak dalej. Zasadniczo powinien dać mi każdą kombinację powyższych tablic (coś w rodzaju drzewa), w kolejności, w jakiej tablica została zdefiniowana:
$new = array(
'10-3' => array(
'15-2' => array('20-2', '20-6', '20-7'),
'15-4' => array('20-2', '20-6', '20-7'),
'15-8' => array('20-2', '20-6', '20-7'),
'15-9' => array('20-2', '20-6', '20-7')
),
'10-5' => array(
'15-2' => array('20-2', '20-6', '20-7'),
'15-4' => array('20-2', '20-6', '20-7'),
'15-8' => array('20-2', '20-6', '20-7'),
'15-9' => array('20-2', '20-6', '20-7')
)
);
Ponieważ tablica może zawierać dowolną liczbę elementów, zakładam, że musiałbym zawrzeć jakiś typ funkcji rekurencyjnej. Nie mam zbyt dużego doświadczenia w rekursji, więc jest to dla mnie dość trudne zadanie.
Czy mogę uzyskać wskazówki, od czego zacząć w budowaniu tej funkcji rekurencyjnej?