【问题标题】:Updating a dynamically added up sub arrays更新动态添加的子数组
【发布时间】: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


【解决方案1】:

如果你想要无限/无限嵌套,你需要使用循环函数。

例如(伪代码)

function recurrentMenuProcess(branch) {
    foreach (item in branch) {
        //processing here
        if (item.hasChildren) {
            recurrentMenuProcess(item);
        }
    }
}
recurrentMenuProcess(json);

【讨论】:

  • 您好,似乎更接近了,谢谢。您有任何参考链接吗?
  • 参考链接是什么意思? =)
猜你喜欢
  • 2021-07-16
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-21
相关资源
最近更新 更多