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

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

下面我来给你详细讲解“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 无限级分类,超级简单的无限级分类,支持输出树状图

基础教程推荐