cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Bagaimana untuk menyelesaikan masalah yang apabila gelung for memanggil fungsi rekursif, data mengandungi rekod data sebelumnya? ?

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

Panggil dalam gelunggetchild($pid)Semasa rekursi ini, komen kanak-kanak di bawah setiap ulasan ibu bapa akan menyertakan komen kanak-kanak ulasan ibu bapa sebelumnya. Bagaimana untuk menyelesaikannya?

Saya tahu ia disebabkan static $arr; pembolehubah statik. Tetapi disebabkan keperluan perniagaan, saya perlu mengeluarkan struktur data sedemikian, iaitu keperluan untuk membuat balasan yang serupa dengan laman web ini. Dapatkan semua komen kanak-kanak di bawah setiap ulasan ibu bapa. Tetapi dengan pendekatan di atas, komen kanak-kanak ulasan ibu bapa seterusnya mengandungi data komen kanak-kanak yang sebelumnya.

Adakah cara untuk menyelesaikan masalah ini! ! !

某草草某草草2732 hari yang lalu840

membalas semua(1)saya akan balas

  • 阿神

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

    Ia rekursif dan statik, yang agak mengelirukan.

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

    ditukar kepada

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

    Bukankah ini okey?

    balas
    0
  • Batalbalas