PHP递归实现无限级分类的代码示例

 更新时间:2023年10月30日 09:52:36   作者:PHP隔壁老王邻居  
无限级分类是一种对商品或信息进行分类的方式,在这种分类方式中,每个分类都可以再次细分出更多的子分类,形成无限的级别,本文给大家介绍了如何使用PHP递归实现无限级分类,文中有详细的代码示例,需要的朋友可以参考下

什么是无限级分类?

无限级分类是一种对商品或信息进行分类的方式,在这种分类方式中,每个分类都可以再次细分出更多的子分类,形成无限的级别

应用场景:

一个电商网站的分类可以是:服装、鞋类、家居用品等,而服装分类下又可以进一步划分成男装、女装、童装等子分类,男装分类下又可以划分成衬衫、T恤、外套等子分类,这样就形成了多层次的无限级分类

在PHP中实现无限级分类可以使用递归的方法来实现。下面是一个简单的示例: 

<?php
// 模拟分类数据
$categories = array(
    array('id' => 1, 'name' => '电子产品', 'parent_id' => 0),
    array('id' => 2, 'name' => '手机', 'parent_id' => 1),
    array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1),
    array('id' => 4, 'name' => '家用电器', 'parent_id' => 0),
    array('id' => 5, 'name' => '电视', 'parent_id' => 4),
    array('id' => 6, 'name' => '冰箱', 'parent_id' => 4),
    array('id' => 7, 'name' => '空调', 'parent_id' => 4),
    array('id' => 8, 'name' => '服饰', 'parent_id' => 0),
    array('id' => 9, 'name' => '男装', 'parent_id' => 8),
    array('id' => 10, 'name' => '女装', 'parent_id' => 8),
    array('id' => 11, 'name' => '鞋类', 'parent_id' => 0),
    array('id' => 12, 'name' => '男鞋', 'parent_id' => 11),
    array('id' => 13, 'name' => '女鞋', 'parent_id' => 11),
    array('id' => 14, 'name' => '数码产品', 'parent_id' => 1),
    array('id' => 15, 'name' => '相机', 'parent_id' => 14),
    array('id' => 16, 'name' => '摄像机', 'parent_id' => 14),
    array('id' => 17, 'name' => '办公用品', 'parent_id' => 0),
    array('id' => 18, 'name' => '文具', 'parent_id' => 17),
    array('id' => 19, 'name' => '办公设备', 'parent_id' => 17),
    array('id' => 20, 'name' => '电脑配件', 'parent_id' => 1),
    array('id' => 21, 'name' => '显示器', 'parent_id' => 20),
    array('id' => 22, 'name' => '内存条', 'parent_id' => 20),
    array('id' => 23, 'name' => '游戏机', 'parent_id' => 1),
    array('id' => 24, 'name' => 'PS5', 'parent_id' => 23),
    array('id' => 25, 'name' => 'Switch', 'parent_id' => 23),
);
// 递归处理分类数据
function buildTree($categories, $parent_id = 0) {
    $tree = array();
    foreach ($categories as $category) {
        if ($category['parent_id'] == $parent_id) {
            $children = buildTree($categories, $category['id']);
            if ($children) {
                $category['children'] = $children;
            }
            $tree[] = $category;
        }
    }
    return $tree;
}
// 构建树形结构
$tree = buildTree($categories);
// 显示分类数据
function showTree($tree, $indent = 0) {
    foreach ($tree as $category) {
        echo str_repeat("--", $indent) . $category['name'] . "<br>";
        if (isset($category['children'])) {
            showTree($category['children'], $indent + 1);
        }
    }
}
// 调用函数显示树形结构
showTree($tree);

以上就是PHP递归实现无限级分类的代码示例的详细内容,更多关于PHP递归实现无限级分类的资料请关注脚本之家其它相关文章!

相关文章

  • PHP单态模式简单用法示例

    PHP单态模式简单用法示例

    这篇文章主要介绍了PHP单态模式简单用法,结合实例形式分析了php单态模式的定义与相关使用技巧,需要的朋友可以参考下
    2016-11-11
  • 用php简单实现加减乘除计算器

    用php简单实现加减乘除计算器

    加减乘除计算器想必大家都有使用过吧,本文为大家介绍下使用php如何实现,下面有个不错的示例,感兴趣的朋友可以参考下
    2014-01-01
  • php四种定界符详解

    php四种定界符详解

    本文主要介绍了php四种定界符,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 关于WordPress的SEO优化相关的一些PHP页面脚本技巧

    关于WordPress的SEO优化相关的一些PHP页面脚本技巧

    这篇文章主要介绍了关于WordPress的SEO优化相关的一些PHP页面脚本技巧,包括区分显示页面标题和关键字等,需要的朋友可以参考下
    2015-12-12
  • php max_execution_time执行时间问题

    php max_execution_time执行时间问题

    大部分PHP代码执行时间都不会很久。但是有些时候,比如等待图片上传,可能执行时间过长导致超时。
    2011-07-07
  • 使用PHP函数scandir排除特定目录

    使用PHP函数scandir排除特定目录

    scandir()函数返回一个数组,其中包含指定路径中的文件和目录。这篇文章主要介绍了使用PHP函数scandir排除特定目录,需要的朋友可以参考下
    2014-06-06
  • PHP+Ajax实现的博客文章添加类别功能示例

    PHP+Ajax实现的博客文章添加类别功能示例

    这篇文章主要介绍了PHP+Ajax实现的博客文章添加类别功能,结合实例形式分析了php+ajax实现的数据交互、数据库连接、查询等相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • jQuery+php实现ajax文件即时上传的详解

    jQuery+php实现ajax文件即时上传的详解

    本篇文章是对jQuery+php实现ajax文件即时上传的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • /etc/php-fpm.d/www.conf 配置注意事项

    /etc/php-fpm.d/www.conf 配置注意事项

    下面小编就为大家带来一篇/etc/php-fpm.d/www.conf 配置注意事项。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • PHP处理Json字符串解码返回NULL的解决方法

    PHP处理Json字符串解码返回NULL的解决方法

    这篇文章主要介绍了PHP处理Json字符串解码返回NULL的解决方法,以一个过滤函数的实例展示了处理json返回错误的解决方法,并罗列了造成这一错误的常见情况,需要的朋友可以参考下
    2014-09-09

最新评论