用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日

相关文章

  • 详解PHP中的命名空间

    当PHP应用程序变得越来越复杂时,一个重要的问题是如何组织和使用代码。命名空间是PHP5.3引入的一个强大的功能,允许我们将相关的代码组织在一起,以更好地管理代码。 什么是命名空间? 命名空间可以看作是一种访问控制。简单来说,它是PHP中为了解决命名冲突而引入的一种机制。通过命名空间,我们可以为我们的类、函数和常量等定义一个专属的名称空间,不同的命名空间中的…

    PHP 2023年5月26日
    00
  • PHP常用技巧总结(附函数代码)

    PHP常用技巧总结 一、字符串处理 1. 字符串反转 可以使用strrev()函数来反转字符串: $string = "Hello World!"; $reversed = strrev($string); echo $reversed; // 输出 "!dlroW olleH" 2. 字符串截取 我们常常需要从一个字…

    PHP 2023年5月24日
    00
  • PHP CURL模拟GET及POST函数代码

    下面是详细讲解“PHP CURL模拟GET及POST函数代码”的完整攻略: 1. 什么是CURL? CURL 全称为“Client URL Library”,是一个用来发出 HTTP 请求的工具和库。它支持多种协议,包括 HTTP、FTP、SMTP 等等。在 PHP 中,我们可以通过使用 CURL 库来发出 HTTP 请求,包括 GET 和 POST 请求。…

    PHP 2023年5月25日
    00
  • php获取数组长度的方法(有实例)

    当我们使用PHP编程时,经常会遇到一个问题,那就是获取数组的长度。本文将详细讲解PHP获取数组长度的方法,并给出两个实例。 获取数组长度的方法 在PHP中,获取数组长度有三种方法:count()、sizeof()和使用循环计数器。其中最常用的是count()和sizeof()方法。具体用法如下: 使用count()函数 count()函数是PHP自带的函数之…

    PHP 2023年5月26日
    00
  • PHP实现简单的协程任务调度demo示例

    PHP实现简单的协程任务调度是通过PHP的协程扩展实现的。下面是实现简单的协程任务调度的完整攻略。 1. 环境准备 首先需要安装Swoole扩展,并开启–enable-async-redis编译选项。可以通过以下命令安装: pecl install swoole_async_redis 2. 实现代码 <?php function coroutine…

    PHP 2023年5月23日
    00
  • 浅析PHP中的闭包和匿名函数

    浅析PHP中的闭包和匿名函数 什么是闭包和匿名函数? 闭包,简单来说,就是匿名函数能够访问其词法范围内的变量,即使在词法范围之外也是如此。闭包函数的实现方式在英文中被称为”closure”,因此在PHP中也常常被称为”闭包函数”。 匿名函数,就是没有名称的函数。匿名函数可以赋值给变量,作为参数传递给其他函数,或者作为其他函数的返回值。匿名函数往往会和闭包结合…

    PHP 2023年5月27日
    00
  • ArcGIS 10.7怎么安装?ArcGIS Desktop 10.7安装激活+中文汉化图文教程

    ArcGIS是地理信息系统软件的行业标准,为GIS的工作提供可视化、数据管理、空间分析等强大的功能。下面我将详细讲解ArcGIS Desktop 10.7的安装、激活和中文汉化过程。 安装 首先,要从Esri官网下载ArcGIS Desktop 10.7的安装包。下载地址:https://www.esri.com/en-us/arcgis/products/…

    PHP 2023年5月26日
    00
  • 如何用php获取文件名后缀

    获取文件名后缀是一个常见的操作,可以通过 PHP 中的 pathinfo() 函数来实现。下面是获取文件名后缀的完整攻略: 步骤一:获取文件路径 首先,我们需要获取文件的路径。可以通过传递文件路径的字符串参数来实现: $file_path = ‘example/test.jpg’; 步骤二:使用pathinfo()函数获取文件信息 接下来,使用 pathin…

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