function getchild($pid) {
static $arr;
$list = "select * from table where parent_id = $pid";
foreach($list as $k =>$v) {
$arr[] = $list[$k];
getchild($v['comment_id']);
}
return $arr;
}
function get_comment_list() {
$comment_list = "select * table where parent_id=0";
foreach($comment_list as $k =>$v) {
$child_comments = getchild($v['comment_id']); //递归取出父评论下所有的子评论
$comment_list[$k]['childs'] = $child_comments;
}
}
循環呼叫getchild($pid)
這個遞歸的時候,每個父評論下的子評論會把前一條父評論的子評論包含進來,這個怎麼解決啊?
我知道是因為 static $arr;
靜態變數的原因。但由於業務需要我需要取出這樣的資料結構,就是做一個類似本站的回覆的需求。把每條父評論下所有的子評論取出。但是上面的做法,出現了,下一條父評論的子評論包含了上一條的子評論數據。
有什麼辦法可以解決這個問題! ! !
阿神2017-07-04 13:48:06
又是遞歸又是static有點暈。
$arr[] = $list[$k];
getchild($v['comment_id]);
改成
$arr[$v['comment_id]] = getchild($v['comment_id]);
這樣不行嗎