我正在尝试构建一个<ul>
树来显示多维PHP数组,但我见过的所有示例都涉及回显for / foreach循环中的输出。我希望将递归函数的输出存储在变量中而不立即回显。这可能吗?
我的递归显示代码:
function displayArrayRecursively($tree) {
for($i = 0; $i < count($tree); $i++) {
echo '<ul><li>'.$tree[$i]['name'];
if(is_array($tree[$i]['children'])){
$this->displayArrayRecursively($tree[$i]['children']);
}
echo '</li></ul>';
}
}
但当然,这是回应输出,这不是我想要的。有任何想法吗?谢谢!
答案 0 :(得分:1)
function displayArrayRecursively($tree) {
$output = '';
for($i = 0; $i < count($tree); $i++) {
$output .= '<ul><li>'.$tree[$i]['name'];
if(is_array($tree[$i]['children'])){
$output .= $this->displayArrayRecursively($tree[$i]['children']);
}
$output .= '</li></ul>';
}
return $output;
}
答案 1 :(得分:0)
连接变量然后return
。但您可以考虑重命名该功能,因为它不再是“显示”。也许formatArrayRecursively()
:
function displayArrayRecursively($tree) {
$output = '';
for($i = 0; $i < count($tree); $i++) {
$output .= '<ul><li>'.$tree[$i]['name'];
if(is_array($tree[$i]['children'])){
$output .= $this->displayArrayRecursively($tree[$i]['children']);
}
$output .= '</li></ul>';
}
return $output;
}
然后称之为:
$var = $this->displayArrayRecursively($something);
另外,对于数组,foreach
更简单:
foreach($tree as $val) {
$output .= '<ul><li>'.$val['name'];
if(is_array($val['children'])){
$output .= $this->displayArrayRecursively($val['children']);
}
$output .= '</li></ul>';
}