我有一种情况是让我忙碌的时间比应该更长。我想从数据库表构建一个项目树。请考虑下表:
| id | name | parent |
|----|---------|--------|
| 1 | Root | 0 |
| 2 | Child | 1 |
| 3 | Child 2 | 2 |
| 4 | Child 3 | 3 |
我需要一个递归遍历给定起点的函数,直到没有父符号为止。我认为可行的是以下内容,但它没有。 while循环不会停止为零。
public function getChildren($parent, $output = array()){
$folder = [select name, parent from table];
array_push($output, $folder->name);
$newParent = $folder->parent;
while($newParent >= 0){
self::getChildren($newParent, $output);
}
}
当我为while()
构造交换if()/else()
循环时,工作是什么,但后来我遇到了返回响应的问题
if($newParent != 0){
self::getChildren($newParent, $output);
}else{
return array_reverse($output);
}
因为我在类上下文中需要在构建树之后返回值,所以基于此我假设我需要一个while()
循环并在此之后返回响应。但我无法让它发挥作用。
首先我使用了while($newParent <= 0){
,但这也没有用。
我的预期结果如下:
print_r(getChildren(3));
// response:
Array
(
[0] => Root
[1] => Child
[2] => Child 2
[3] => Child 3
)
答案 0 :(得分:0)