首页 > 解决方案 > PHP递归函数输出选择

问题描述

我一定是屏蔽了一些东西,我知道答案很简单,但我一生都无法从谷歌得到任何明确的答案。我有这个数组:

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 的事情,但现在已经研究了很长时间才弄明白。任何帮助,将不胜感激。

标签: phparraysselectrecursive-datastructures

解决方案


这是一个简单的递归函数:

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

随意根据您的需要修改/更改它,但它应该是不言自明的。


推荐阅读