recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment résoudre le problème selon lequel les données contiennent l'enregistrement de données précédent lorsqu'une boucle for appelle une fonction récursive? ?

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;
    }
}

Appel en bouclegetchild($pid)Pendant cette récursion, les commentaires enfants sous chaque commentaire parent incluront les commentaires enfants du commentaire parent précédent. Comment résoudre ce problème ?

Je sais que c'est à cause de static $arr; variables statiques. Mais en raison des besoins de l'entreprise, je dois supprimer une telle structure de données, ce qui correspond à la nécessité de fournir une réponse similaire à celle de ce site. Obtenez tous les commentaires des enfants sous chaque commentaire parent. Mais avec l'approche ci-dessus, le commentaire enfant du commentaire parent suivant contient les données du commentaire enfant du précédent.

Y a-t-il un moyen de résoudre ce problème ! ! !

某草草某草草2732 Il y a quelques jours839

répondre à tous(1)je répondrai

  • 阿神

    阿神2017-07-04 13:48:06

    C'est récursif et statique, ce qui est un peu déroutant.

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

    changé en

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

    Est-ce que ça ne va pas ?

    répondre
    0
  • Annulerrépondre