在一个变量中组合递归函数的输出

时间:2012-08-01 06:56:18

标签: php codeigniter recursion

我正在使用递归函数来回应代码点火器中的多级导航方案  它回声很好,但我想将这个输出组合在一个变量中,并希望从函数调用的地方返回它  拜托,帮帮我,这是我的代码     


    function parseAndPrintTree($root, $tree)
    {
        if(!is_null($tree) && count($tree) > 0) 
                {
                echo 'ul';
                foreach($tree as $child => $parent) 
                    {
                    if($parent->parent == $root) 
                        {
unset($tree[$child]); echo 'li'; echo $parent->name; parseAndPrintTree($parent->entity_id, $tree); echo 'li close'; } } echo 'ul close'; } }

2 个答案:

答案 0 :(得分:3)

试试这个:

function parseAndPrintTree($root, $tree)
{
    $output = '';

    if(!is_null($tree) && count($tree) > 0) 
        {
                $output .= 'ul';
                foreach($tree as $child => $parent) 
                    {
                    if($parent->parent == $root) 
                        {

                        unset($tree[$child]);
                        $output .=  'li';
                        $output .= $parent->name;
                        $output .= parseAndPrintTree($parent->entity_id, $tree);
                        $output .= 'li close';
                        }
                    }
                $output.= 'ul close';
    }

    return $output;
}

答案 1 :(得分:0)

你只需使用。建立一个字符串。连接符号(NB = 之间没有空格!)

function parseAndPrintTree($root, $tree)
{
    if(!is_null($tree) && count($tree) > 0) 
            {
            $data = 'ul';
            foreach($tree as $child => $parent) 
                {
                if($parent->parent == $root) 
                    {

                    unset($tree[$child]);
                    $data .= 'li';
                    $data .= $parent->name;
                    parseAndPrintTree($parent->entity_id, $tree);
                    $data .= 'li close';
                    }
                }
            $data .= 'ul close';
    }
return $data;
}

// then where you want your ul to appear ...
echo parseAndPrintTree($a, $b);

一个更好的名字可能是treeToUl()或类似的东西,更好地说明了你对这个代码的意图(一个html无序列表?)

您还可以通过添加一些行结尾来保持您的html输出可读:

$data .= '</ul>' . PHP_EOL;