Laravel:用无尽的孩子建立树状结构

时间:2015-05-18 13:42:44

标签: php laravel laravel-5

Heey所有我试图用Laravel建立一个拥有无尽孩子的树状结构。

这是我用来构建树的方法:

$result = '';
    foreach($categories as $root) {

        $result .= sprintf('
            <tr>
                <td>
                    <div class="radio">
                        <label>
                            <input type="radio" name="parent_id" id="" value="%d">
                            %s
                        </label>
                    </div>
                </td>
            </tr>', $root->id, $root->title
        );

        if(isset($root->children)) {
            $this->getChildren($root->children, $result);
        }

    }

    dd($result);

正如你所看到我在我的方法中引用另一种方法。 那个看起来像这样:

public function getChildren($children, $result)
    {
        foreach($children as $child) {
            $result .= sprintf('
                <tr>
                    <td>
                        <div class="radio">
                            <label>
                                <input type="radio" name="parent_id" id="" value="%d">
                                %s
                            </label>
                        </div>
                    </td>
                </tr>', $child->id, $child->title
            );

            if(isset($child->children)) {
                $this->getChildren($child->children, $result);
            }

        }

        return $result;


    }

然而,这只是回归我的主要结果..

如何将数据附加到$ result变量?

提前致谢!!

2 个答案:

答案 0 :(得分:1)

将您的函数声明更改为:

public function getChildren($children, &$result)

&符号表示您通过引用传递变量。

答案 1 :(得分:0)

不需要代码重复,只需:

$result = $this->getChildren($categories);

dd($result);

public function getChildren($children)
{
    $result = '';
    foreach($children as $child) {
        $result .= sprintf('
            <tr>
                <td>
                    <div class="radio">
                        <label>
                            <input type="radio" name="parent_id" id="" value="%d">
                            %s
                        </label>
                    </div>
                </td>
            </tr>', $child->id, $child->title
        );

        if(isset($child->children)) {
            $result .= $this->getChildren($child->children);
        }

    }

    return $result;

}