我试图在控制器中创建html而不是js。 有一个数组深度未知的数组。
$tree = $repo->childrenHierarchy();
和一个函数,它读取数组并返回一个带有数组元素值的html字符串。
public function recursive($tree) {
$html = "";
foreach ($tree as $t) {
$html = $html . '<li> <span><i class="fa fa-lg fa-minus-circle"></i>' . $t['title'] . '</span>';
if ($t['__children'] != null) {
$html = $html . '<ul>';
$this->recursive($t['__children']);
$html = $html . '</ul>';
} else {
$html = $html . '</li>';
}
return $html;
}
我的问题是我无法保存总字符串,因为每次函数调用自身时,var html都会被初始化,需要保持字符串类似全局,但不知道如何。
答案 0 :(得分:2)
在仔细研究这个之后,我认为在递归调用中初始化$html
看起来真的很像问题。在我看来,它实际上应该从孩子们开始是空的。但是看起来你并没有将孩子们附加到你已经去过的$html
字符串上。我认为你需要
$this->recursive($t['__children']);
取而代之的是
$html .= $this->recursive($t['__children']);
答案 1 :(得分:0)
在行动中将该值存储在类属性中不应该有什么问题吗?
public $html = "";
public function recursive($tree) {
foreach ($tree as $t) {
$this->html = $this->html . '<li> <span><i class="fa fa-lg fa-minus-circle"></i>' . $t['title'] . '</span>';
if ($t['__children'] != null) {
$this->html = $this->html . '<ul>';
$this->recursive($t['__children']);
$this->html = $this->html . '</ul>';
} else {
$this->html = $this->html . '</li>';
}
return $this->html;
}