[英]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.