2014-07-02 149 views
0

我有这样的功能:PHP - 增量递归函数

function show_comments(&$comments, $parent_id = 0) { 
    $comments_list = ""; 
    $i = 0; 
    foreach($comments as $comment) : 
    if ($comment["parent_id"] != $parent_id) 
     continue; 

    $comments_list .= '<div class="comment level-'. $i . '">'; 
    $i++; 
    $comments_list .= "<p>$comment[body]</p>"; 
    $comments_list .= $this->show_comments($comments, $comment['id_comment']); 
    $comments_list .= '</div>'; 
    endforeach; 


    return $comments_list; 
} 

我想父div来上课0级和母公司的直接孩子有1级和儿童级别-1要有级别-2等等。我怎样才能做到这一点?

+0

您将不得不遍历所有评论来构建树。或者你可以跟踪数据库中的level_id。 – Gudgip

回答

4
// add a new parameter -------------------------------- 
//             | 
function show_comments(&$comments, $parent_id = 0, $level = 0) { 
    $comments_list = ""; 

    // not needed 
    // $i = 0; 

    foreach($comments as $comment) : 
    if ($comment["parent_id"] != $parent_id) 
     continue; 

    // use the level parameter ------------------------ 
    //            | 
    $comments_list .= '<div class="comment level-'. $level . '">'; 

    // not needed 
    // $i++; 
    $comments_list .= "<p>$comment[body]</p>"; 


    // increment it on recursive calls ----------------------------------------- 
    //                   | 
    $comments_list .= $this->show_comments($comments, $comment['id_comment'], $level + 1); 
    $comments_list .= '</div>'; 
    endforeach; 


    return $comments_list; 
} 
+0

它正在工作:)。谢了哥们 :) – Sasha