【发布时间】:2018-05-26 01:21:26
【问题描述】:
我正在创建一个类似于 wordpress 的树状结构菜单。我可以像 wordpress 一样做到这一点。我的用户界面看起来像这样:
在这里,用户可以添加他们需要多少个子菜单。 JSON代码格式如下:
[
{
"layout":0,
"layouttype":1,
"deleted":0,
"new":0,
"deleter":0,
"slug":"Home",
"name":"Home",
"id":"12122017033717-1"
},
{
"layout":0,
"layouttype":4,
"deleted":0,
"new":0,
"deleter":0,
"slug":"About",
"name":"About",
"id":"12122017033717-2"
},
{
"layout":0,
"layouttype":1,
"deleted":0,
"new":0,
"deleter":0,
"slug":"Services",
"name":"Servicessss",
"id":"12122017033717-3",
"children":[
{
"layout":0,
"layouttype":6,
"deleted":0,
"new":0,
"deleter":1,
"slug":"Services-1",
"name":"Services 1",
"id":"12122017033717-4"
},
{
"layout":0,
"layouttype":1,
"deleted":0,
"new":0,
"deleter":1,
"slug":"ss",
"name":"ss",
"id":"12122017033920-1",
"children":[
{
"layout":0,
"layouttype":1,
"deleted":0,
"new":0,
"deleter":1,
"slug":"fddzfsdz",
"name":"fddzfsdz",
"id":"12122017040829-1"
},
{
"layout":0,
"layouttype":3,
"deleted":0,
"new":0,
"deleter":1,
"slug":"fddzfsdzfcg",
"name":"Sarath",
"id":"12122017040829-2"
},
{
"layout":0,
"layouttype":1,
"deleted":0,
"new":0,
"deleter":1,
"slug":"asassssss",
"name":"asassssss",
"id":"12122017041219-1"
}
]
}
]
}
]
获取和更新一个子菜单的当前代码来了。
$arr = json_decode($arr);
foreach($arr as $item) {
$menuid = $item - > id;
if ($menuid == $id) {
$item - > layouttype = $page_layout;
}
if (property_exists($item, 'children')) {
foreach($item - > children as $innerRow) {
$submenuid = $innerRow - > id;
if ($submenuid == $id) {
$innerRow - > layouttype = $page_layout;
}
}
}
}
我需要动态编辑数据“布局类型”。我尝试使用foreach(),它适用于一个或两个子菜单的子菜单,但如果用户添加更多子菜单的子菜单,代码将无法容纳。
那么有人可以告诉我这个 foreach 循环可以根据子菜单的子数进行修改的最佳方法吗?
【问题讨论】:
-
而不是获取所有菜单数据...只需获取第一个菜单数据。之后使用 ajax 获取子菜单数据。它将保存您的代码。而且应用加载速度更快...
-
@GyandeepSharma 您好,感谢您的回复。但我无法理解你的意思。你能举个例子吗?
-
Sarath Hari, Gyandeep Sharma 可能想建议使用客户端 javascript 而不是后端处理。我同意这一点,因为这将减少加载时间,(也许)更快的渲染和更少的服务器负载。
-
看...你有一个 3 级菜单。所以只需获取 1 级菜单。之后,通过单击该单击项的 1 级菜单 2 级菜单中的任何一个来获取该子菜单并显示在单击项的底部。这个功能可以通过ajax
标签: php arrays json recursion foreach