Рекурсивная функция для вывода элементов (двух, трех, может больше)мерного массива циклом foreach

Есть массив в качестве примера (Вообще, массив может быть с n-уровнем вложенности, элементы которого могут иметь произвольный тип данных):

    $menu = [
        [
            'label' => 'More frameworks',
            'items' => [
                ['label' => 'Laravel', 'url' => 'https://laravel.com'],
                ['label' => 'Slim', 'url' => 'http://www.slimframework.com/'],
            ],
        ],
        [
            'label' => 'Yii framework',
            'url'   => 'https://yiiframework.ru'
        ],
        [
            'label' => 'Symfony',
            'url' => 'https://symfony',
        ],
    ];

Я пытаюсь: создать функцию, которая будет принимать в качестве единственного аргумента: ПРОИЗВОЛЬНЫЙ МАССИВ. А на выходе функция будет выдавать многоуровневый список ul.

Мой код:

function arrOutput($arrInput) {
    foreach ($arrInput as $value) {
        if (gettype($value) == "array") {//если элемент массива имеет тип: array
            return(arrOutput($value));//VOT ONO тут функция запускает сама себя и в качестве аргумента принимает текущий элемент массива, тоесть в качестве аргумента принимает массив.
        } else if (gettype($value) == "string") {//если элемент массива имеет тип: string
            echo "$value <br />";
        }
    }
}

arrOutput($menu);

Результат действия функции:

More frameworks
Laravel
https://laravel.com

Я смотрю на строчку: VOT ONO.И вроде бы почти всё работает, но ... Т.е. попался в массиве ЭЛЕМЕНТ, который сам является массивом, ок, условие работает: функция запускает сама себя, но вот после этого ЭЛЕМЕНТа почему то цикл перестает перебирать следующие елементы. Просьба сильно не пинать, не вразумею, почему же дальше цикл foreach не отрабатывает.


Ответы (1 шт):

Автор решения: Igor

Что делает return? Выходит из функции. То есть прерывает ее выполнение.

//return(arrOutput($value));
arrOutput($value);
→ Ссылка