PHP: вложенное меню с рекурсивной функцией, разворачивать только некоторые узлы (не все дерево)

У меня есть этот массив, называется$nested (это длинный, но я попытался получить всеобъемлющий сценарий):

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
        )

)

С этой рекурсивной функцией:

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>

Я легко получаю этот вывод:

Страница 1Страница 1-1Страница 1-1-1Страница 1-1-2Страница 1-1-3Страница 1-2Страница 1-2-1Страница 1-2-2Страница 1-2-3Страница 1-3Страница 2Страница 2-1Страница 2-1-1Страница 2-1-2Страница 2-1-3Страница 2-2Страница 2-3Страница 3Страница 3-1Страница 3-2Страница 4Страница 4-1Страница 5

Все идет нормально.

Теперь я хотел бы НЕ показывать все дерево сразу, но углубляться, когда пользователь нажимает на страницу / подстраницу, например так:

URL:http://www.example.com/page.php, начальное состояние («развернуть» все элементы с родителем = 0)

Страница 1Страница 2Страница 3Страница 4Страница 5

URL:http://www.example.com/page.php?id=1 (разверните все элементы с родителем = 1)

Страница 1Страница 1-1Страница 1-2Страница 1-3Страница 2Страница 3Страница 4Страница 5

URL:http://www.example.com/page.php?id=6 (разверните все элементы с родителем = 6)

Страница 1Страница 1-1Страница 1-1-1Страница 1-1-2Страница 1-1-3Страница 1-2Страница 1-3Страница 2Страница 3Страница 4Страница 5

И так далее

Кажется, миссия невыполнима для меня, любая помощь, пожалуйста? заранее спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос