¿Cómo construir una función recursiva para enumerar todas las combinaciones de una matriz multinivel?

Tengo una matriz que puede contener cualquier número de elementos. Cada elemento contiene una ID y una matriz llamada "opciones" (también con cualquier número de elementos). Aquí está la estructura:

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

Me gustaría crear otra matriz basada en esta. Cada clave es el campo ID + un valor de matriz 'opción', y el valor es una matriz del siguiente elemento, y luego el siguiente, y así sucesivamente. Básicamente, debería darme cada combinación de los arreglos anteriores (algo así como un árbol), en el orden en que se definió el arreglo:

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

Debido a que la matriz puede contener cualquier número de elementos, asumo que necesitaría incluir algún tipo de función recursiva. No tengo mucha experiencia en recursión, por lo que esta es una tarea bastante desalentadora para mí.

¿Puedo obtener algunos consejos sobre dónde comenzar a construir esta función recursiva?

Respuestas a la pregunta(2)

Su respuesta a la pregunta