繁体   English   中英

显示多维PHP数组而不回显的循环

[英]Loop for displaying multidimensional PHP array WITHOUT echoing

我试图构建一个<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>';
    }
}

但是,当然,这是在回显输出,这不是我想要的。 有任何想法吗? 谢谢!

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;
}

连接到变量,然后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>';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM