php 无限级分类,超级简单的无限级分类,支持输出树状图

yizhihongxing

下面我来给你详细讲解“PHP无限级分类”攻略。

简介

无限级分类是一个常用的分类方式,在开发中用来表示多级分类,例如商品分类、新闻分类等。

原理

无限极分类是通过递归的方式来实现的。递归函数基本原理就是函数在调用自身,直到满足条件返回结果。

因此在分类时,我们需要先对数据进行递归处理,生成对应的层级关系。最后输出树状图。

实现步骤

以下是php实现无限级分类的步骤:

  1. 从数据库中获取所有分类数据 ;
  2. 递归分类数据生成对应的层级关系 ;
  3. 输出树状图。

具体实现方法如下:

获取分类数据

首先我们需要从数据库中获取所有的分类数据,一般的分类数据包含以下字段:分类ID、分类名称、分类父级ID。

$stmt = $pdo->query('SELECT id, name, parent_id FROM category');
$categoryList = $stmt->fetchAll(PDO::FETCH_ASSOC);

递归分类数据

我们需要一个递归函数来对分类数据进行处理。

function makeTree($data, $parentId = 0, $level = 0) 
{
    $tree = [];
    foreach($data as $v)
    {
        if($v['parent_id'] == $parentId)
        {
            $v['level'] = $level;
            $tree[] = $v;
            $tree = array_merge($tree, makeTree($data, $v['id'], $level + 1));
        }
    }
    return $tree;
}

函数接受三个参数:

  • $data:需要处理的数据;
  • $parentId:当前处理的父级ID,初始值为0;
  • $level:当前处理的分类层级,初始值为0。

函数返回一个生成好的树状分类数组。

输出树状图

最后,我们需要使用树状分类数组来输出对应的树状图。

function buildTree($data)
{
    $str = '';
    foreach($data as $v)
    {
        $prefix = str_repeat('-', $v['level']);
        $str .= $prefix . $v['name'] . '<br>';
        if(isset($v['children']))
        {
            $str .= buildTree($v['children']);
        }
    }
    return $str;
}

函数接受一个树状分类数组,返回对应的树状文字列表。

示例说明

以下是一个简单的示例:

$categoryList = [
    ['id' => 1, 'name' => '分类1', 'parent_id' => 0],
    ['id' => 2, 'name' => '分类2', 'parent_id' => 1],
    ['id' => 3, 'name' => '分类3', 'parent_id' => 2],
    ['id' => 4, 'name' => '分类4', 'parent_id' => 1],
];
$categoryTree = makeTree($categoryList);
echo buildTree($categoryTree);

输出结果为:

分类1
-分类2
--分类3
-分类4

以上就是PHP无限级分类的攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 无限级分类,超级简单的无限级分类,支持输出树状图 - Python技术站

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

相关文章

  • php多进程应用场景实例详解

    PHP多进程应用场景实例详解 PHP虽然是一门脚本语言,但是也可以通过多进程的方式来提高程序的并发能力,从而提高程序的性能。本文将详细讲解PHP多进程的应用场景与实例,并提供代码示例。 什么是多进程? 多进程指的是同一程序可以同时执行多次,每次执行都会开启一个新的进程,这些进程各自独立完成任务,从而提高程序的并发能力。 多进程的应用场景 1. 并行处理任务 …

    PHP 2023年5月23日
    00
  • 基于PHP的简单采集数据入库程序【续篇】

    基于PHP的简单采集数据入库程序【续篇】的完整攻略如下: 一、前言 本文是《基于PHP的简单采集数据入库程序》的续篇,主要介绍如何通过 PHP 的 cURL 库采集网页数据,并将采集到的数据保存到 MySQL 数据库中。 二、采集数据入库程序实现步骤 1.编写采集程序 首先,需要通过 PHP 的 cURL 库访问目标网站,获取网站 HTML 代码,再通过正则…

    PHP 2023年5月27日
    00
  • 二招解决php乱码问题

    针对“二招解决php乱码问题”,我将分步骤对其进行详细讲解。 一、问题背景 在使用 PHP 进行开发时, 经常会出现乱码情况。乱码的产生原因有很多,比如编码不一致、数据传输格式不正确等。 二、解决方法一:设置编码格式 1. 设置HTML网页的编码格式 在网页中添加如下代码: <meta charset="utf-8" /> 其…

    PHP 2023年5月23日
    00
  • PHP开发不能违背的安全规则 过滤用户输入

    针对“PHP开发不能违背的安全规则 过滤用户输入”,下面是一份完整攻略: 安全规则 在进行PHP开发时,为了确保系统的安全性,需要遵循以下安全规则: 1. 过滤用户输入 在开发Web应用时,用户输入数据是最重要的数据源之一。因此,合理地过滤用户输入是确保Web应用程序安全性的第一步。过滤用户输入可以细化为以下几点: 类型转换: 将用户输入的数据转换为指定类型…

    PHP 2023年5月23日
    00
  • 如何在PHP中生成随机数

    生成随机数在很多Web应用程序中都是至关重要的。PHP提供了多种生成随机数的函数。下面我们来详细讲解如何在PHP中生成随机数。 PHP函数rand() PHP内置的rand()函数可以生成伪随机整数。rand()的形式如下: rand($min, $max); 其中,$min是最小值,$max是最大值。如果只传递一个参数,则默认最小值为0,最大值为rand_…

    PHP 2023年5月26日
    00
  • PHP实现链式操作的三种方法详解

    PHP实现链式操作的三种方法详解 在PHP中,使用链式操作可以让代码看起来更加简洁,易于维护。针对于链式操作,本文将介绍三种实现方法,分别是使用普通函数、使用魔术方法和使用静态方法。 方法一:使用普通函数 使用普通函数实现链式操作,就是在每个函数的末尾都返回对象本身,这样就可以实现链式调用。 示例1: class Chain{ private $var; p…

    PHP 2023年5月23日
    00
  • php中动态调用函数的方法

    在PHP中,动态调用函数是一种非常常用的方法,它允许我们根据传递的函数名来在运行时调用该函数。以下是动态调用函数的两种不同方法: 1. 通过字符串调用函数名 对于这种方法,我们可以使用PHP的内置函数call_user_func(): function myFunction($param1, $param2) { return $param1 * $para…

    PHP 2023年5月27日
    00
  • 详解PHP用substr函数截取字符串中的某部分

    请听我详细讲解如何使用PHP的substr函数来截取字符串中的某部分。 什么是substr函数? substr函数是PHP内置的字符串截取函数,可以用于截取字符串中指定位置的子字符串。该函数的语法如下: substr(string $string, int $start, int|null $length = null): string|false 其中,$…

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