如何连接所有的html并告诉php在最后发送html 递归循环?
我有递归循环来从表构建树作为(父子)节点。
函数运行良好,但我想返回完整的html而不是打印它,所以我使用return,它打破了foreach循环。
function show_full_tree($ne_id)
{
$store_all_id = array();
$id_result = $this->comment_model->tree_all($ne_id);
foreach ($id_result as $comment_id) {
array_push($store_all_id, $comment_id['parent_id']);
}
//echo $this->db->last_query();exit;
$this->in_parent(0,$ne_id, $store_all_id);
}
function in_parent($in_parent,$ne_id,$store_all_id) {
if (in_array($in_parent,$store_all_id)) {
$result = $this->comment_model->tree_by_parent($ne_id,$in_parent);
echo $in_parent == 0 ? "<ul class='tree'>" : "<ul>";
foreach ($result as $re) {
echo " <li class='comment_box'>
<div class='aut'>".$re['comment_id']."</div>
<div class='aut'>".$re['comment_email']."</div>
<div class='comment-body'>".$re['comment_body']."</div>
<div class='timestamp'>".date("F j, Y", $re['comment_created'])."</div>
<a href='#comment_form' class='reply' id='" . $re['comment_id'] . "'>Replay </a>";
$this->in_parent($re['comment_id'],$ne_id, $store_all_id);
echo "</li>";
}
echo "</ul>";
}
}
答案 0 :(得分:2)
您可以使用连接来构建HTML字符串并像其他人建议的那样将其返回,或者 替代方法 将在现有解决方案上使用输出缓冲:< / p>
function get_full_tree($ne_id) {
ob_start();
show_full_tree($ne_id);
return ob_get_clean();
}
答案 1 :(得分:2)
只需制作一个string
变量,连接您打印的所有项目,并在loop
完成后返回。使用。=运算符,这是将新字符串添加到html变量末尾的简写。
function in_parent($in_parent,$ne_id,$store_all_id) {
$html = "";
if (in_array($in_parent,$store_all_id)) {
$result = $this->comment_model->tree_by_parent($ne_id,$in_parent);
$html .= $in_parent == 0 ? "<ul class='tree'>" : "<ul>";
foreach ($result as $re) {
$html .= " <li class='comment_box'>
<div class='aut'>".$re['comment_id']."</div>
<div class='aut'>".$re['comment_email']."</div>
<div class='comment-body'>".$re['comment_body']."</div>
<div class='timestamp'>".date("F j, Y", $re['comment_created'])."</div>
<a href='#comment_form' class='reply' id='" . $re['comment_id'] . "'>Replay </a>";
$html .=$this->in_parent($re['comment_id'],$ne_id, $store_all_id);
$html .= "</li>";
}
$html .= "</ul>";
}
return $html;
}