用PHP实现多级树型菜单

实现多级树型菜单是Web开发中常见的需求,下面是用PHP实现多级树型菜单的完整攻略:

一、准备数据

首先需要准备好数据,这里以一个简单的示例为例:

$id = 1;
$data = [
    ['id'=>1,'name'=>'菜单1','parent_id'=>0],
    ['id'=>2,'name'=>'子菜单1-1','parent_id'=>1],
    ['id'=>3,'name'=>'子菜单1-2','parent_id'=>1],
    ['id'=>4,'name'=>'子菜单1-2-1','parent_id'=>3],
    ['id'=>5,'name'=>'子菜单1-2-2','parent_id'=>3],
    ['id'=>6,'name'=>'菜单2','parent_id'=>0],
    ['id'=>7,'name'=>'菜单3','parent_id'=>0],
    ['id'=>8,'name'=>'子菜单3-1','parent_id'=>7],
    ['id'=>9,'name'=>'子菜单3-1-1','parent_id'=>8],
];

二、构建树型结构

根据数据构建树型结构,这里使用递归的方式,代码如下:

/**
 * 构建树形结构
 * @param  array   $data        数据
 * @param  integer $parent_id   父级ID
 * @param  integer $level       层级
 * @return array
 */
function buildTree($data, $parent_id = 0, $level = 0)
{
    $tree = [];
    foreach ($data as $key => $value) {
        if ($value['parent_id'] == $parent_id) {
            $value['level'] = $level;
            $value['child'] = buildTree($data,$value['id'],$level+1);
            $tree[] = $value;
        }
    }
    return $tree;
}

$tree = buildTree($data);

三、生成HTML代码

树型结构构建完成后,最后一步就是生成HTML代码,代码如下:

/**
 * 生成HTML代码
 * @param  array   $tree 树形结构
 * @return string
 */
function buildHtml($tree)
{
    $html = '';
    foreach ($tree as $key => $value) {
        $html .= str_repeat('    ', $value['level']);
        $html .= '<a href="#">'.$value['name'].'</a><br>';
        if (!empty($value['child'])) {
            $html .= buildHtml($value['child']);
        }
    }
    return $html;
}

echo buildHtml($tree);

以上就是用PHP实现多级树型菜单的完整攻略,下面附上运行示例:

  1. 基础示例:https://gliese-q.github.io/php-tree-menu/basic.html
  2. 带Icon的示例:https://gliese-q.github.io/php-tree-menu/icon.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用PHP实现多级树型菜单 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 网站生成静态页面,及网站数据采集的攻、防原理和策略

    网站生成静态页面的攻、防原理与策略 原理 网站生成静态页面是指将动态数据生成静态HTML文件,以提高网站性能和访问速度。攻击者可以通过修改静态页面来实施攻击,从而导致不良后果。静态页面的生成原理是通过模板引擎和数据库等生成,并通过缓存等机制进行优化。 防御策略 对于敏感数据需要进行服务器端渲染,如账号密码等。 禁止通过get方式将动态页面转换为静态页面,只允…

    PHP 2023年5月27日
    00
  • SQL注入宽字节注入由浅到深学习

    下面是“SQL注入宽字节注入由浅到深学习”的完整使用攻略,包括攻击方式、防御措施和两个示例说明。 SQL注入和宽字节注入 SQL注入和宽字节注入是常见的网络攻击方式,攻击者可以通过这些方式获取敏感信息或者破坏系统。 SQL注入 SQL注入是一种利用Web应用程序的漏洞,向其中插入恶意SQL语句的攻击方式。攻击者可以通过SQL注入获取敏感信息,修改数据或者破坏…

    PHP 2023年5月12日
    00
  • PHP Composer 虚拟依赖包 – 实现按需载入钉钉对应功能模块的 php sdk

    难得钉钉官方提供了完整的 api sdk,各种语言的版本的都有,而且 api 覆盖面非常完整。但是,composer 安装下来有大几十兆,这个不符合个人的品味,我想要按需加载。 于是在构思了一两次以后,今天下午开始动手实现。 首要原则,不做手工劳动,人工分包,然后提交到 packagist 仓库,那样后续会有巨大的维护工作量。 基本思路: 按固定规则在 pa…

    PHP 2023年4月18日
    00
  • php实现简单加入购物车功能

    下面是“php实现简单加入购物车功能”的完整攻略: 简介 购物车是电商网站非常重要的一个功能,能够方便用户选购商品并统一结算,提高用户购物体验。本文将介绍如何使用php实现简单的加入购物车功能。 实现过程 步骤一:创建购物车页面 首先我们需要创建一个购物车页面,并在页面上显示加入购物车的按钮。下面是一个简单的例子: <!DOCTYPE html>…

    PHP 2023年5月27日
    00
  • 详解PHP PDO简单教程

    下面是详解PHP PDO简单教程的完整攻略。 PHP PDO简单教程 什么是PDO? PDO(PHP Data Objects)是PHP 5.1引入的一个轻量级、可扩展的PHP数据访问层,它提供了一套相对比较统一的接口,使得开发者可以使用一套通用的编程方式来访问各种不同的数据库,如MySQL、SQLite、Oracle等等。 PDO的优点 支持多种数据库(M…

    PHP 2023年5月23日
    00
  • 一次 Hyperf 注解失效问题分析

    问题环境 PHP: 8.0.13 Swoole: 4.6.2 Hyperf: 2.2.33 运行环境: Docker Desktop on WSL2 文章会持续修订,转载请注明来源地址:https://her-cat.com/posts/2023/03/02/hyperf-annotation-failure-problem-analysis/ 问题背景 有…

    PHP 2023年4月17日
    00
  • php结合md5的加密解密算法实例

    PHP结合MD5的加密解密算法实例攻略 MD5是一种常用的消息摘要算法,被广泛用于数据加密、数字签名等各种应用中。在使用PHP进行数据加密和解密的过程中,可以使用MD5算法来实现,下面就介绍PHP结合MD5的加密解密算法实例的完整攻略。 一、PHP中的MD5算法 MD5是一种单向加密算法,它能够把任意长度的明文数据转换成长度固定的128位密文,且不可逆。在P…

    PHP 2023年5月26日
    00
  • PHP新手上路(十二)

    PHP新手上路(十二)——操作XML 什么是XML XML(eXtensible Markup Language)即可拓展标记语言,是一种用来描述数据的标记语言。它类似于HTML,但是XML语法更为严格,目的是为了使其更容易被其他程序理解和处理。通常被用于Web服务、配置文件、数据存储、传输等领域。XML文档由标签(tag)和属性(attribute)构成。…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部