PHP递归函数输出选择

时间:2018-07-30 15:01:54

标签: php arrays select recursive-datastructures

我一定已经屏蔽了某些东西,我知道答案很简单,但是在我的生命中,我无法从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的东西,但是很长一段时间以来一直在研究这个问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

可以根据您的需要随意修改/更改它,但这应该是很容易解释的。