Como construir função recursiva para listar todas as combinações de uma matriz de vários níveis?

Eu tenho uma matriz que pode conter qualquer número de elementos. Cada elemento contém um ID e um array chamado "opções" (também com qualquer número de elementos). Aqui está a estrutura:

$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
            );

Eu gostaria de criar outro array baseado neste. Cada chave é o campo de ID + um valor de matriz de 'opção' e o valor é uma matriz do próximo elemento e, em seguida, o próximo e assim por diante. Basicamente, ele deve me fornecer todas as combinações das matrizes acima (como uma árvore), na ordem em que a matriz foi definida:

$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')
                            )
             );

Como o array pode conter qualquer número de elementos, estou assumindo que precisaria incluir algum tipo de função recursiva. Eu não tenho muita experiência em recursão, então esta é uma tarefa bastante difícil para mim.

Eu poderia obter algumas dicas sobre onde começar a construir essa função recursiva?

questionAnswers(2)

yourAnswerToTheQuestion