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