javascript - 怎麼解決for循環呼叫遞歸函數時,資料包含上一條資料記錄? ?
某草草
某草草 2017-07-04 13:46:06
0
1
730
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;靜態變數的原因。但由於業務需要我需要取出這樣的資料結構,就是做一個類似本站的回覆的需求。把每條父評論下所有的子評論取出。但是上面的做法,出現了,下一條父評論的子評論包含了上一條的子評論數據。

有什麼辦法可以解決這個問題! ! !

某草草
某草草

全部回覆 (1)
阿神

又是遞歸又是static有點暈。

$arr[] = $list[$k]; getchild($v['comment_id]);

改成

$arr[$v['comment_id]] = getchild($v['comment_id]);

這樣不行嗎

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!