【问题标题】:PHP Recursive Function to output selectPHP递归函数输出选择
【发布时间】:2018-07-30 15:01:54
【问题描述】:

我一定是屏蔽了某些东西,我知道答案很简单,但我这辈子都无法从 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/…
  • “但是一直在努力” - 向我们展示您的想法,我们可以从那里帮助您。
  • 如果您可以从这个递归函数中发布您想要的预期 html,那将非常有帮助。

标签: php arrays select recursive-datastructures


【解决方案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] 发送到递归?
猜你喜欢
  • 1970-01-01
  • 2012-10-26
  • 2017-07-01
  • 2021-09-28
  • 2021-07-12
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多