Рекурсивная функция PHP для вывода select

Я, должно быть, что-то заблокировал, я знаю, что ответ прост, но, хоть убей, я не могу получить четких ответов от Google. У меня есть такой массив:

Array
(
[0] => Array
    (
        [id] => 1
        [name] => Paint
        [parent_id] => 0
        [sub] => Array
            (
                [0] => Array
                    (
                        [id] => 4
                        [name] => Dulux
                        [parent_id] => 1
                        [sub] => Array
                            (
                                [0] => Array
                                    (
                                        [id] => 6
                                        [name] => Roof Cover
                                        [parent_id] => 4
                                        [sub] => Array
                                            (
                                            )
                                    )
                            )
                    )
                [1] => Array
                    (
                        [id] => 5
                        [name] => Plascon
                        [parent_id] => 1
                        [sub] => Array
                            (
                            )
                    )
            )
    )
[1] => Array
    (
        [id] => 2
        [name] => Electrical
        [parent_id] => 0
        [sub] => Array
            (
            )
    )
[2] => Array
    (
        [id] => 3
        [name] => Plumbing
        [parent_id] => 0
        [sub] => Array
            (
            )
    )
)

и хотите вывести выбор с группами параметров. Я знаю, что это 101 PHP-штука, но я долго работал над этим, чтобы понять это. Любая помощь будет оценена по достоинству.

Проверьте это, аналогичная проблема может помочь вам: stackoverflow.com/questions/13874186/…

Dammeul 30.07.2018 17:03
"но я работал над этим слишком долго" - Покажите нам, что вы придумали, и мы сможем вам помочь.
Magnus Eriksson 30.07.2018 17:04

Было бы очень полезно, если бы вы могли опубликовать ожидаемый HTML-код, который вы хотите от этой рекурсивной функции.

Ethan 30.07.2018 17:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
141
1

Ответы 1

Вот простая рекурсивная функция:

function output_option($arr) {
    foreach ($arr as $item) {
        if ($item['sub']) {
            echo '<optgroup label = "', $item['name'], '">';
            output_option($arr['sub']);
            echo '</optgroup>';
        } else {
            echo '<option id = "', $arr['name'], '">', $arr['name'], '</option>';
        }
    }
}

Не стесняйтесь модифицировать / изменять его для своих нужд, но это должно быть достаточно понятным.

вы можете использовать array.strlen () == 0 для первого условия выхода и заменить foreach, отправив в рекурсию $ arr [index + 1]?

Jordi Jordi 30.07.2018 17:28

Другие вопросы по теме