使用数组中的 li 标签构建树形菜单

2024-02-11

我正在检索一个数组,并使用函数来构造该数组,使其看起来像树数组。如何使用列表标签(ul,li)制作树形菜单

function buildTree(array &$elements, $parentId = 0, $elkey = null) {
        $branch = array();

        foreach ($elements as $key=>$element) {
            if ($element[$elkey]['parent_id'] == $parentId) {
                $children = buildTree($elements, $element[$elkey]['id'], $elkey);
                if ($children) {
                    $element['children'] = $children;
                }
                $branch[$element[$elkey]['id']] = $element;
                unset($elements[$key]);
            }
        }
        return $branch;
    }

    $menuTree = buildTree($systemPageCategories, 0, 'SystemPageCategory');
    debug($menuTree);

打印=>

....
...

(int) 5 => array(
        'SystemPageCategory' => array(
            'id' => '5',
            'parent_id' => '0',
            'title' => 'Administration',
            'url' => '',
            'sort' => '5',
            'published' => '1'
        )
    ),
    (int) 6 => array(
        'SystemPageCategory' => array(
            'id' => '6',
            'parent_id' => '0',
            'title' => 'Reports',
            'url' => '',
            'sort' => '6',
            'published' => '1'
        ),
        'children' => array(
            (int) 7 => array(
                'SystemPageCategory' => array(
                    'id' => '7',
                    'parent_id' => '6',
                    'title' => 'Revenue',
                    'url' => '',
                    'sort' => '1',
                    'published' => '1'
                ),
                'children' => array(
                    (int) 13 => array(
                        'SystemPageCategory' => array(
                            'id' => '13',
                            'parent_id' => '7',
                            'title' => 'OBE Finance - Revenue (Current Monthly)',
                            'url' => '',
                            'sort' => '1',
                            'published' => '1'
                        )
                    ),
                    (int) 14 => array(
                        'SystemPageCategory' => array(
                            'id' => '14',
                            'parent_id' => '7',
                            'title' => 'OBE Finance - Revenue (Snapshot Monthly)',
                            'url' => '',
                            'sort' => '2',
                            'published' => '1'
                        )
                    ),

....
...
...

试试这个例子,将 $menuTree 变量传递给 buildMenu 函数。

    function buildMenu($menus)
    {
    $data = '';
    foreach ($menus as $key => $menu) {
        if ($key == 'children' && !empty($menu)) {
            $data .= buildMenu($menu);
            continue;
        }

        $data .= '<li><a href="'.$menu['url'].'">'.$menu['title'].'</a></li>';
    }

    if (!empty($data)) {
        $data .= '<ul>'.$data.'</ul>';
    }

    return $data;
   }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用数组中的 li 标签构建树形菜单 的相关文章

  • ruby 中可以做动态变量吗? [复制]

    这个问题在这里已经有答案了 我可以通过其他方式实现这种动态性质 但这引起了我的好奇 Ruby 中有类似的机制吗 varname hello varname world echo hello Output world 您可以使用以下方法实现类
  • Symfony 生产日志

    在 Symfony 3 中 我是否可以在不打开调试模式的情况下将所有错误写入生产日志 错误将包括 http 500 错误或应用程序错误或 php 错误 这些错误由于生产时错误标志设置为 false 而被静音 当前生产的日志配置是 monol
  • 按带宽限制成员资格

    我刚刚将 Codeigniter 应用程序部署到 Amazon EC2 使用 S3 作为媒体 使用 RDS 作为 MySQL 我需要根据使用的带宽量限制用户帐户访问 帐户将基于带宽 例如基本帐户 x 每月最多 20GB 等 但是我不知道最好
  • 连接以逗号分隔的字符串,但如果字符串为空,则逗号不应出现在开头[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题是由拼写错误或无法再重现的问题引起的 虽然类似的问题可能是on topic help on topic在这里 这个问题的解决方式不
  • C++ 中数组的正确分配和释放内存

    我正在处理动态数组 功能empty matrix 创建一个新数组 表示一个矩阵 delete matrix 释放为矩阵分配的所有内存 我的函数中是否出现内存泄漏example 如果我打电话add add a b c 函数中分配的内存会发生什
  • 通过 wp_handle_upload 删除未放入上传文件夹中的图像

    我正在将图像保存到上传文件夹 但我正在使用文件放置内容 http php net manual en function file put contents php代替wp 句柄 上传 https codex wordpress org Fu
  • Magento:查找包含产品的订单

    Magento 有没有办法找到包含给定产品的所有订单 如果可以通过管理面板来完成就更好了 报告 gt 产品 gt 订购的产品向我提供了产品销售的日期以及包含该产品的订单数量 但我需要知道哪些特定订单包含该产品 谢谢你 这个问题我在另一个问题
  • 在订单编辑页面添加自定义元框并将其显示在客户订单页面上

    在 WooCommerce 中 想要在 WooCommerce 管理订单页面上添加自定义元框 在此框中 我只想在保存到该订单的文本字段中输入跟踪号码 然后在客户查看订单页面上 我想显示一个按钮 用于打开带有跟踪信息的模式 该模式只会拉入一个
  • Laravel - JWT Auth 无法从请求中解析令牌

    我在中间件中添加了以下代码以进行用户身份验证JWT Auth https github com tymondesigns jwt auth 它适用于中间件处理的所有路由 public function handle request Clos
  • Drupal:*.api.php 中的 hook_ 函数是否被调用过?

    在 Drupal 7 中 每个核心模块都有一个 api php文件 其中 是模块的名称 例如 modules node node api php modules path path api php 这些文件有什么用 它们包含以以下开头的函数
  • 在 Java 和 PHP 之间加密/解密字符串

    我使用 AES 加密来加密和解密服务器端的 php 和 Android 应用程序 作为客户端 之间的字符串 PHP 中的加密字符串为 HaxRKnMxT24kCJWUXaVvqDHahzurJQK sYA4lIHql U 在 Java 中是
  • 原始 POST 数据是什么?

    我试图理解原始 POST 数据的含义 PHP 手册页 HTTP RAW POST DATA http php net manual en reserved variables httprawpostdata php只是声明这个变量包含Raw
  • 设置基于 PHP 定时器的函数

    我有一个 php 文件test php 我想要echo or print5 秒后 即在浏览器调用 加载或打开 php 文件后不久 成功 顺便说一句 有时我可能想在特定的时间间隔后执行 初始化某些函数 如何使用 php 执行面向时间的任务 例
  • Codeigniter:用户会话不断过期

    我正在使用 CodeIgniter 但在会话方面遇到了一个小问题 我已将 config php 中的 sess expiration 设置为 0 以便用户会话永远不会过期 但用户 甚至我自己 仍然偶尔会被踢出并要求再次登录 顺便说一句 我将
  • PHP:分离业务逻辑和表示逻辑,值得吗? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么要在 PHP 中使用模板系统 https stackoverflow com questions 436014 why should i use templating system in php
  • WooCommerce 添加到购物车后停止重定向

    我希望在用户单击 添加到购物车 按钮后完全删除任何重定向 实际上我没有使用产品页面 我使用一个带有产品链接的简单按钮 如下所示 add to cart 492 我的用户将单击我页面上的多个 添加到购物车 按钮 因此在单击第一个按钮后他无法重
  • MPI_Gatherv:根数组中收到的垃圾值

    我正在尝试实施MPI Gatherv函数于C 根据我的程序 包括 root 在内的每个进程都应该创建一个大小等于 进程的等级 1 这将在所有单元格中保持进程的等级 然后这个本地数组被收集到根的 rcv array 中 不知何故 我得到了垃圾
  • 如何在 PHP 中验证电子邮件? [复制]

    这个问题在这里已经有答案了 如何使用 php5 验证输入值是有效的电子邮件地址 现在我正在使用这段代码 function isValidEmail email pattern a z0 9 a z0 9 a z0 9 a z0 9 a z
  • password_verify 哈希值与密码不匹配

    我使用下面的代码生成了密码哈希 hash password hash test PASSWORD BCRYPT 然后我使用 255 个字符将其存储在数据库中 然后我尝试使用比较器来测试登录 但失败了 它只允许我使用我之前刚刚生成的几行哈希登
  • 手动检查 php 中的 jpeg 文件结尾标记 ffd9 (?) 以捕获截断错误

    基本上是尝试从集合中删除损坏的 过早结束的 jpeg 文件 我认为如果文件末尾标记不存在 则意味着图像被截断 因此我认为它对我的目的无效 这是检查声音的方法吗 如果是的话 我有什么想法可以在 php 中实现这个吗 cheers 尝试这个 j

随机推荐

  • 是否可以将react-datepicker与react hooks表单一起使用?

    是否可以将react datepicker与react hooks表单一起使用 我尝试了以下示例 但没有运气 import React useState from react import styles css import useForm
  • 将字符串解析为 DirectoryInfo 的正确方法? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个程序 为了避免复杂化 我需要将给定的字符串变量解析为 DirectoryInfo 我想知道是否可以将字符串解析为 Direc
  • 如何制作骨头形状的纽扣

    我目前正在为我的网站试验一个按钮 我希望它看起来像一个普通按钮 但是一旦你将其悬停 它就会变成一根骨头 我的网站是关于狗的 所以我使用了一个已经存在的 codepen 项目 最终得到了这个 root bg 1a1e24 color eee
  • 使用 jQuery 重复元素

    我确信这对于正确的人来说是显而易见的 但是如何使用 jQuery 重复一个元素呢 本质上 我希望 jQuery 无限次重复内联元素 就像您使用 CSS 来重复背景纹理的图形一样 我一直在研究 clone 和 each 但确实可以使用一些指针
  • AngularJS:指令隔离范围 - 范围变量未定义

    请有人能给我解释一下为什么吗attrDir的范围变量是可见的 并且oneWay不是吗 我以为scope 也是孤立的 angular module test angular module test directive attrDir attr
  • 访问项目资源中的图像?

    如何在运行时访问已添加到项目资源中的图像 我希望能够做这样的事情 if value picBox1 image Resources imageA else picBox2 image Resources imageB Something I
  • MongoDB toArray 性能

    我正在尝试从 Mongo Node 中的术语集合构建类别树 但首先我使用 in 选择所有树元素 console time termsCol find var terms await termsCol find term id in flat
  • gitlab API有速率限制吗

    github对OAuth客户端的速率限制为5000 小时 但我找不到相同的信息gitlab 除了创建新用户和重置密码6次 分钟 是否意味着没有限制 答案是不再是 不 https gitlab com gitlab org gitlab ru
  • iceConnectionState 已断开连接(通过互联网使用时)

    这个问题以前曾被问过 但我还没有找到答案 我基本上遇到了与描述相同的问题here https stackoverflow com questions 34405816 peerjs webrtc iceconnectionstate fai
  • 使用 openCV 从图像中读取数字和字母

    我正在开发一个应用程序 使用 c 中的 opencv 读取图像中的字母和数字 我首先将给定的彩色图像和颜色模板更改为二值图像 然后调用方法cvMatchTemplate 这个方法只是突出显示了模板匹配的区域 但不清楚 我只是不想看到该区域
  • 如何保留从常规终端到 gnu 屏幕的 emacs 颜色

    作为记录 我使用的是 OSX 雪豹 当我直接从终端使用 emacs 时 我有一个我非常满意的颜色集 例如 用于 c c 黑底绿 红色注释 彩色关键字 等等 其中一些是在我的 终端首选项 中设置 有些位于我的 emacs 文件中 见下文 当我
  • JFreeChart 链接轴

    我创建了一个带有两个独立 JFree 图表的框架 以 2x1 网格布局保存 顶部图表显示 Canlestick 图表 底部图表显示时间序列图 我想要做的是链接两个图表显示的 X 轴 以便当我放大一个图表时 另一个图表会缩放到相应的时间段 这
  • netbeans 中的 libtesseract303.dll 问题

    我正在实施 OCR 系统 当我将 dll 文件放在 java 类路径上时 出现以下错误 Exception in thread main java lang UnsatisfiedLinkError G software apache to
  • WPF:更改组合框的 ItemTemplate 会删除您键入时向下跳转列表的功能。有任何解决这个问题的方法吗?

    PersonVM cs public class MainWindowVM public MainWindowVM PersonList new ObservableCollection
  • 类的模式是其自身的列表

    考虑以下 object Main case class Foo bar Int extends FooList val self List Foo this Nil abstract class FooList val self List
  • 按值维护 SortedMap

    众所周知 SortedMap 维护按键排序的条目 我在这个论坛上阅读了很多帖子 并看到了很多按值对 SortedMap 进行排序的示例 但是 正如您所知 当我将一个项目放入默认的 SortedMap 时 它不会再次对 Map 进行排序 只是
  • 在枚举的 Java switch 语句中,为什么当我在每种情况下限定我的值时会收到编译错误?

    我在 Java 中的 Enum 上有一个 switch 语句 让我们调用 IMyInterface MyEnum 我的每个案例陈述的形式如下 IMyInterface MyEnum MyValue 尽管如果导入 我可以删除 IMyInter
  • 使用 ansible playbook 运行 postgresql 命令。 Postgresql 需要密码

    我想写一个 Ansible 剧本来尝试处理一些 postgresql 命令 我之前做了一个类似的剧本 但在这种情况下 Postgresql 不需要密码 我以为我可以使用我的旧剧本 效果很好 但我错了 该数据库需要密码 我知道 Ansible
  • 将 Linq 结果绑定到 datagridview

    我有一个 linq 结果作为 var 查询如下 var groups myDataTable AsEnumerable GroupBy r gt r Field
  • 使用数组中的 li 标签构建树形菜单

    我正在检索一个数组 并使用函数来构造该数组 使其看起来像树数组 如何使用列表标签 ul li 制作树形菜单 function buildTree array elements parentId 0 elkey null branch arr