【问题标题】:Bulid recursive function run on stdClass Object [closed]构建在 stdClass 对象上运行的递归函数 [关闭]
【发布时间】:2013-09-26 18:21:27
【问题描述】:

我想用递归函数构建项目树...(<ul><li>) 有人可以帮我吗?我怎样才能在这个阵列上运行?比如……

我使用 Codeigniter 如果它改变任何东西......

Array
(
    [0] => stdClass Object
        (
            [id] => 1000
            [children] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 1001
                            [children] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [id] => 1002
                                        )

                                )

                        )

                )

        )

    [1] => stdClass Object
        (
            [id] => 1003
            [children] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 1004
                        )

                )

        )

)

输出需要是这样的:

<div class="dd">
    <ol class="dd-list">
        <li class="dd-item" data-id="1000">
            <div class="dd-handle">parent 1000</div>
            <ol class="dd-list">
                <li class="dd-item" data-id="1001">
                    <div class="dd-handle">children of 1000 and parent of 1002</div>
                    <ol class="dd-list">
                        <li class="dd-item" data-id="1002">
                            <div class="dd-handle">children of 1001</div>
                        </li>
                    </ol>
                </li>
            </ol>
        </li>
        <li class="dd-item" data-id="1003">
            <div class="dd-handle">parent 1003</div>
            <ol class="dd-list">
                <li class="dd-item" data-id="1004">
                    <div class="dd-handle">children of 1003</div>
                </li>
            </ol>
        </li>
    </ol>
</div>

【问题讨论】:

  • 如何构建递归函数\=
  • 你到底想把它变成什么 - 给我们一些示例输出。
  • 输出需要看起来像
      list...
  • 这可以用多种方式解释 - 在您的问题中添加一些 HTML。

标签: php arrays function recursion


【解决方案1】:

这应该可以解决问题:

function render(array $children) {
    echo '<ol class="dd-list">';
    foreach($children as $child) {
        echo '<li class="dd-item" data-id="', $child->id, '">';
        echo '<div class="dd-handle">parent ', $child->id, '</div>';
        if(isset($child->children)) {
            render($child->children);
        }
        echo '</li>';
    }
    echo '</ol>';
}

echo '<div class="dd">';
render($array);
echo '</div>';

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2022-01-12
    • 2015-12-24
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多