PHP: menú anidado con una función recursiva, expanda solo algunos nodos (no todo el árbol)

Tengo esta matriz, llamada$nested (Es largo, pero traté de obtener un escenario completo):

Array
(
    [1] => Array
        (
            [id] => 1
            [parent] => 0
            [title] => Page 1
        )

    [2] => Array
        (
            [id] => 2
            [parent] => 0
            [title] => Page 2
        )

    [3] => Array
        (
            [id] => 3
            [parent] => 0
            [title] => Page 3
        )

    [4] => Array
        (
            [id] => 4
            [parent] => 0
            [title] => Page 4
        )

    [5] => Array
        (
            [id] => 5
            [parent] => 0
            [title] => Page 5
        )

    [6] => Array
        (
            [id] => 6
            [parent] => 1
            [title] => Page 1-1
        )

    [7] => Array
        (
            [id] => 7
            [parent] => 1
            [title] => Page 1-2
        )

    [8] => Array
        (
            [id] => 8
            [parent] => 1
            [title] => Page 1-3
        )

    [9] => Array
        (
            [id] => 9
            [parent] => 2
            [title] => Page 2-1
        )

    [10] => Array
        (
            [id] => 10
            [parent] => 2
            [title] => Page 2-2
        )

    [11] => Array
        (
            [id] => 11
            [parent] => 2
            [title] => Page 2-3
        )

    [12] => Array
        (
            [id] => 12
            [parent] => 3
            [title] => Page 3-1
        )

    [13] => Array
        (
            [id] => 13
            [parent] => 3
            [title] => Page 3-2
        )

    [14] => Array
        (
            [id] => 14
            [parent] => 4
            [title] => Page 4-1
        )

    [15] => Array
        (
            [id] => 15
            [parent] => 6
            [title] => Page 1-1-1
        )

    [16] => Array
        (
            [id] => 16
            [parent] => 6
            [title] => Page 1-1-2
        )

    [17] => Array
        (
            [id] => 17
            [parent] => 6
            [title] => Page 1-1-3
        )

    [18] => Array
        (
            [id] => 18
            [parent] => 7
            [title] => Page 1-2-1
        )

    [19] => Array
        (
            [id] => 19
            [parent] => 7
            [title] => Page 1-2-2
        )

    [20] => Array
        (
            [id] => 20
            [parent] => 7
            [title] => Page 1-2-3
        )

    [21] => Array
        (
            [id] => 21
            [parent] => 9
            [title] => Page 2-1-1
        )

    [22] => Array
        (
            [id] => 22
            [parent] => 9
            [title] => Page 2-1-2
        )

    [23] => Array
        (
            [id] => 23
            [parent] => 9
            [title] => Page 2-1-3
        )

)

Con esta función recursiva:

function recursive($parent, $array) {
    $has_children = false;
    foreach($array as $key => $value) {
        if ($value['parent'] == $parent) {       
            if ($has_children === false && $parent) {
                $has_children = true;
                echo '<ul>' ."\n";
            }
            echo '<li>' . "\n";
                echo '<a href="/page.php?id=' . $value['id'] . '">' . $value['title'] . '</a>' . " \n";
            echo "\n";
                recursive($key, $array);
            echo "</li>\n";
        }
    }
    if ($has_children === true && $parent) echo "</ul>\n";
}

<ul><?php echo recursive(0, $nested); ?></ul>

Fácilmente obtengo esta salida:

Página 1Página 1-1Página 1-1-1Página 1-1-2Página 1-1-3Página 1-2Página 1-2-1Página 1-2-2Página 1-2-3Página 1-3Página 2Página 2-1Página 2-1-1Página 2-1-2Página 2-1-3Página 2-2Página 2-3Página 3Página 3-1Página 3-2Página 4Página 4-1Página 5

Hasta ahora tan bueno.

Ahora, me gustaría NO mostrar todo el árbol a la vez, sino profundizar cuando el usuario hace clic en una página / subpágina, como esto:

URL:http://www.example.com/page.php, estado inicial ("expandir" todos los elementos con padre = 0)

Página 1Página 2Página 3Página 4Página 5

URL:http://www.example.com/page.php?id=1 (expandir todos los elementos con padre = 1)

Página 1Página 1-1Página 1-2Página 1-3Página 2Página 3Página 4Página 5

URL:http://www.example.com/page.php?id=6 (expandir todos los elementos con padre = 6)

Página 1Página 1-1Página 1-1-1Página 1-1-2Página 1-1-3Página 1-2Página 1-3Página 2Página 3Página 4Página 5

Y así

Me parece una misión imposible, ¿alguna ayuda, por favor? Gracias por adelantado

Respuestas a la pregunta(2)

Su respuesta a la pregunta