代码之家  ›  专栏  ›  技术社区  ›  Vahid Alvandi

如何在php中结束递归函数后返回值

php
  •  0
  • Vahid Alvandi  · 技术社区  · 6 年前

    我需要在循环结束后在递归函数中返回 $build 变量

        $traverse = function ($tree,$build = '') use (&$traverse) {
    
            foreach ($tree as $key=>$menu) {
                if (count($menu->children) > 0) {
                    $build .= "<li ><a href='" . $menu->url . "'>" . $menu->text . "</a><ul>";
                        $traverse( $menu->children,$build);
                    $build .= "</ul></li>";
                } else {
                    $build .= "<li ><a href='" . $menu->url . "'>" . $menu->text . "</a></li>";
                }
            }
        };
    
    
     $traverse($tree );
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   sklwebdev    6 年前

    关于我的评论,你应该:

    $traverse = function ($tree) use (&$traverse) {
    
        $build = '';
        if (count($menu->children) > 0) {
            $build .= "<li ><a href='" . $menu->url . "'>" . $menu->text . "</a><ul>";
            $build .= $traverse($menu->children);
            $build .= "</ul></li>";
        } else {
            $build .= "<li ><a href='" . $menu->url . "'>" . $menu->text . "</a></li>";
        }
    
        return $build;
    };
    

    $build 作为函数的参数。

    你还应该检查html代码是否在最后有效。因为它不会是。