递归如何获取无限极分类?
有一张分类表,如何使返回的结果是无限极children?recursiveData
方法哪里有问题?谢谢。
show()方法返回结果是:
public function show()
{
$data = $this->getData(0);
$res = $this->recursiveData($data);
echo json_encode($res);
}
public function recursiveData($data)
{
if (empty($data)) {
return false;
}
$children = [];
foreach ($data as $dk => $dv) {
$children = $this->getData($dv['id']);
$data[$dk]['children'] = $children;
$this->recursiveData($children);
}
return $data;
}
/**
* Get data from database.
* @return array
**/
public function getData($parent_id)
{
$tmp = [];
$data = DB::select('select id,title from category where parent_id<99 and parent_id = ?', [$parent_id]);
foreach ($data as $dk => $dv) {
$tmp[] = [
'id' => $dv->id,
'title' => $dv->title,
'parentId' => $parent_id,
];
}
return $tmp;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可以考虑把数据一次性都拿出来,然后在递归组装
改成
不要在循环里面嵌套sql查询