javascript - Wie kann das Problem gelöst werden, dass die Daten den vorherigen Datensatz enthalten, wenn eine for-Schleife eine rekursive Funktion aufruft? ?
某草草
某草草 2017-07-04 13:46:06
0
1
810
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;
    }
}

Aufruf in einer Schleifegetchild($pid)Während dieser Rekursion enthalten die untergeordneten Kommentare unter jedem übergeordneten Kommentar die untergeordneten Kommentare des vorherigen übergeordneten Kommentars. Wie lässt sich das Problem lösen?

Ich weiß, dass es an static $arr; statischen Variablen liegt. Aus geschäftlichen Gründen muss ich jedoch eine solche Datenstruktur herausnehmen, um eine ähnliche Antwort wie auf dieser Website zu erstellen. Rufen Sie alle untergeordneten Kommentare unter jedem übergeordneten Kommentar ab. Bei dem oben beschriebenen Ansatz enthält der untergeordnete Kommentar des nächsten übergeordneten Kommentars jedoch die untergeordneten Kommentardaten des vorherigen.

Gibt es eine Möglichkeit, dieses Problem zu lösen? ! !

某草草
某草草

Antworte allen(1)
阿神

又是递归又是static有点晕。

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

改成

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

这样不行吗

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage