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

Я, должно быть, что-то заблокировал, я знаю, что ответ прост, но я не могу получить четкие ответы от 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
            (
            )
    )
)

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

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>';
        }
    }
}

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

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