【发布时间】:2019-09-14 12:17:56
【问题描述】:
已编辑
我有一个存储动态菜单数据的自引用表,如下所示。
|----|----------------|---------------------|------------|
|id | name | link | parent_id |
|----|----------------|---------------------|------------|
|1 | Setup | NULL | 0 |
|----|----------------|---------------------|------------|
|2 | Common_Setup | NULL | 1 |
|----|----------------|---------------------|------------|
|3 | Management | NULL | 0 |
|----|----------------|---------------------|------------|
|4 | Gender | setup/gender | 2 |
|----|----------------|---------------------|------------|
|5 | Approval | management/approval | 3 |
|----|----------------|---------------------|------------|
|6 | EEE | eee | 0 |
|----|----------------|---------------------|------------|
现在我想将它们作为 json 存储在 PHP(Laravel) 变量中,如下面的结构,
[
{
id : 1,
title : 'Setup',
children : [
{
id : 2,
title : 'Common_Setup',
children : [
{
}
]
}
]
}
]
由于子级层没有限制,我认为最好调用递归方法或类似的方法。
function hierarchy($allPage, $parent = 0) {
foreach ($allPage as $page) {
if ($page->parent_id === NULL) $page->parent_id = 0;
if ($page->parent_id === $parent) {
$children = hierarchy($allPage, $page->id);
}
}
}
function getPages()
{
$allPage = Page::all():
$dynamicMenu = hierarchy($allPage, 0);
echo "last: ".$dynamicMenu;
}
在 $dynamicMenu 中,我想存储最终的 JSON 结构。谁能告诉我怎样才能得到这个理想的结构?
【问题讨论】:
-
您已经提供了一些示例代码:它有什么作用?你被困在哪里了?