php - 怎么递归获取文章所有的评论???
本文介绍了php - 怎么递归获取文章所有的评论???的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
表结构:
comment_id 评论ID
arc_id 文章ID
content 内容
parent_id 评论父节点
想要递归得到这样的数据结构:
$arr = array(
[0] => array(
comment_id => 1,
parent_id => 0,
['child'] => array(
[0] => array(
comment_id => 2
parent_id => 1
),
[1] => array(
comment_id => 3
parent_id => 2
),
[2] => array(
comment_id => 4
parent_id => 1
),
........
)
),
[1] => array(
comment_id => 5,
parent_id => 0,
['child'] => array(
[0] => array(
comment_id => 6
parent_id => 5
),
[1] => array(
comment_id => 7
parent_id => 5
),
[2] => array(
comment_id => 8
parent_id => 7
),
........
)
)
);
解决方案
先取出一个二维数组,其中每一项带有
comment_id
和parent_id
字段然后使用下面的函数,将上面的二维数组转成树形结构:
<?php
$arr = [
['comment_id' => 1, 'parent_id' => 0],
['comment_id' => 2, 'parent_id' => 0],
['comment_id' => 3, 'parent_id' => 2],
['comment_id' => 4, 'parent_id' => 1],
['comment_id' => 5, 'parent_id' => 4],
['comment_id' => 6, 'parent_id' => 4],
];
function getTree($arr = []) {
$arr = array_column($arr, NULL, 'comment_id');
$tree = [];
foreach($arr as $i => &$v) {
if(isset($items[$item['parent_id']])){
$items[$item['parent_id']]['children'][] = &$items[$item['comment_id']];
} else {
$tree[] = &$items[$item['id']];
}
}
return $tree;
}
这篇关于php - 怎么递归获取文章所有的评论???的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文