Rumah > Soal Jawab > teks badan
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! ! !
阿神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?