【发布时间】:2021-08-04 03:08:38
【问题描述】:
我有一个菜单表,我在其中存储所有菜单,并希望在其父菜单下一次将所有菜单显示在侧边栏上。为此,我正在组织一个可以在视图文件中使用的数组。
我从数据库中获取的数据是这种格式
Array
(
[0] => Array
(
[id] => 1
[parent_menu_id] => 1
[tbl_name] => jobs
[menu_name] => Create Jobs
)
[1] => Array
(
[id] => 2
[parent_menu_id] => 1
[tbl_name] => jobs
[menu_name] => Show Jobs
)
[3] => Array
(
[id] => 4
[parent_menu_id] => 4
[tbl_name] => customers
[menu_name] => Create Customers
)
[4] => Array
(
[id] => 5
[parent_menu_id] => 4
[tbl_name] => Customers
[menu_name] => Show Customers
)
)
我想要实现的格式是这样的。
Array
(
[0] => Array
(
[tbl_name] => jobs
[0] => Array
(
[menu_name] => Create Jobs
[route] => jobs.create
)
[1] => Array
(
[menu_name] => Show Jobs
[route] => jobs.assigned_jobs
)
[2] => Array
(
[menu_name] => Show All Jobs
[route] => jobs.index
)
)
[1] => Array
(
[tbl_name] => customers
[0] => Array
(
[menu_name] => Create Customers
[route] => customers.create
)
[1] => Array
(
[menu_name] => Show Customers
[route] => customers.show
)
)
)
我面临的唯一问题是重复表名[tbl_name] => jobs,即使我在循环中取消了此设置,您也可以在我的代码中看到。
Array
(
[0] => Array
(
[tbl_name] => jobs
[0] => Array
(
[menu_name] => Create Jobs
[route] => jobs.create
)
[1] => Array
(
[menu_name] => Show Jobs
[route] => jobs.assigned_jobs
)
[2] => Array
(
[menu_name] => Show All Jobs
[route] => jobs.index
)
)
[1] => Array
(
[tbl_name] => jobs
)
[2] => Array
(
[tbl_name] => jobs
)
[3] => Array
(
[tbl_name] => customers
[0] => Array
(
[menu_name] => Create Customers
[route] => customers.create
)
[1] => Array
(
[menu_name] => Show Customers
[route] => customers.show
)
)
[4] => Array
(
[tbl_name] => Customers
)
)
代码
$rec = menu::all();
$rec = $rec->toArray();
$results = [];
$results1 = [];
foreach ($rec as $key => $value)
{
$results['tbl_name'] = $value['tbl_name'];
foreach ($rec as $kk => $vv)
{
if($vv['parent_menu_id'] == $value['id'])
{
$results[] = ['menu_name' => $vv['menu_name'], 'route' => $vv['route']];
unset($rec[$kk]);
}
}
array_values($rec);
$results1[] = $results;
$results = [];
}
【问题讨论】:
-
您的输入数据在数组中没有
route字段,不确定您希望如何在输出中得到它? -
是
parent_menu_id=>tbl_name1:1关系吗? -
嗨尼克 非常感谢您的关注,我昨晚已经修好了。我在下面回答我的问题