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?

questionAnswers(2)

yourAnswerToTheQuestion