【发布时间】:2022-01-05 20:03:05
【问题描述】:
数据库中的表:(这基本上是文件夹)
|groupId| name |parentId|
1 system1 0
2 subsystem1 1
3 subsystem2 2
4 subsubMisc 2
应该给
system1
-subsystem1
--subsystem2
--subsubMisc
到目前为止,只有第一个孩子填充,subsystem1 没有给我孩子。如果他们有任何孩子,我需要以下所有孩子:
[
{
"name": "system1",
"children": [
{
"name": "subsystem1",
"children": [
{
"name": "subsystem2",
},
{
"name": "subsubMisc",
}
]
}
]
}
]
我的代码:
public function getTreeMenu()
{
$result = false;
$data = $this->repository->getRootParents(); // SELECT * FROM myTable WHERE parentId = 0
foreach ($data as $row) {
$children = $this->repository->getFolderChildren($row['parentId']); // SELECT * FROM myTable WHERE pid = :parentId ORDER BY name
if ($children !== false) {
$result[] = array(
'name' => $row['name'],
'children' => $children,
);
} else {
$result[] = array(
'name' => $row['name'],
);
}
}
return $result;
}
这仅适用于第一级。如何为给定文件夹连续循环子文件夹?
【问题讨论】:
-
这是一个函数吗?我看到了
return $result;但没有功能 -
是的,它是一个类中的函数。
-
然后显示为函数,完成函数
-
表格中的一些示例行也有助于我们理解
-
遍历任意深度的数据结构或多或少是递归函数的实际用例。