PHP递归实现无限级分类

news2024/11/19 5:57:02

 什么是无限级分类?

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

应用场景:

一个电商网站的分类可以是:服装、鞋类、家居用品等,而服装分类下又可以进一步划分成男装、女装、童装等子分类,男装分类下又可以划分成衬衫、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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1141883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Gateway解决跨域问题时配置文件不生效的情况之一

首先html文件只有一个发送ajax请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…

二维码智慧门牌管理系统升级解决方案:要素类型

文章目录 前言一、点要素二、线要素三、面要素四、结语 前言 在二维码智慧门牌管理系统的升级中&#xff0c;我们着重解决了要素类型的问题。要素根据实体特征的不同&#xff0c;我们将其分为点、线、面三种要素类型。这样的分类方式使得管理更加科学、有序&#xff0c;大大提…

拜托,一定要让社区工作者刷到啊

社区工作者的福音来了&#xff0c;真的要试试啊 我愿称之为写作天花板&#xff01;只要输入你要写的内容&#xff0c;几秒钟就出来一篇&#xff0c;关键都不带重复的。 亲测好用&#xff0c;不用再绞尽脑汁的写方案&#xff0c;写总结啦&#xff0c;快试试啊

通过电商API接口分析电商平台客户消费行为

分析目的 通过电商API接口获取的数据分析销售数据来了解在线销售业务的消费情况&#xff0c;分析用户消费数据来分析用户的消费行为&#xff0c;为用户推荐相匹配的商品。 分析问题 店铺销售情况 每月成交额 每月销售金额 每月消费人数 每月订单数量 每月客单价 不同省…

鸡尾酒学习——环游世界

1、材料&#xff1a;白朗姆、龙舌兰、威士忌、金酒、伏特加、蓝橙力娇酒、柠檬汁、红石榴糖浆、橙汁、冰块&#xff1b; 2、口感&#xff1a;酸苦涩口味&#xff0c;下层感觉是在喝橙汁&#xff0c;上层在喝酒&#xff0c;适合喜欢喝橙汁以及酒的人&#xff0c;恰巧我不喜欢这两…

第五天:前端页面展示不出来

0.问题展示 但是我这个 展示不来 1.前端页面 渲染 不出来问题 首先想到的是&#xff0c;前端传值的问题然后排查到前端 传值是正确的传值的话&#xff0c;开始debugger 页面没有&#xff0c;然后找他的父页面&#xff0c;父页面是有值的然后找父 方法内部debugger发现第三步…

【疑问解决】在自动装箱中Integer赋予一个常量1,为什么会出现==判断true和flase的情况(JDK源码、内部缓冲)

问题来源自讲课时的Integer练习中 当时第一反应是false true true 因为第一段的输出为flase毋庸置疑了&#xff0c;因为已经new了两个新的堆空间&#xff0c;当然指向不同的空间了 但是第二段第三段就没有头绪了&#xff0c;自动装箱了难道不是执行同一个空间吗…

Go结构体接口反射

文章目录 Go结构体&接口&并发&反射一、结构体struct0、Type关键字1、struct定义及使用2、struct tag3、struct匿名成员3、struct继承4、struct方法 二、接口interface1、接口定义和使用2、空接口3、接口多态及嵌套 三、Go并发1、go协程2、chan管道3、单向管道4、Se…

oracle19c配置驱动

1.遇到的问题 下载jar包 https://www.oracle.com/database/technologies/appdev/jdbc-ucp-19c-downloads.html 执行命令 mvn install:install-file -DgroupIdcom.oracle -DartifactIdojdbc19 -Dversion19.3.0.0 -Dpackagingjar -Dfileojdbc8.jar2.配置驱动 # 数据源配置 data…

浅析体育馆智能信息化升级的四大痛点与解决方案

体育馆是举办重要体育赛事、文艺汇演、商业演出等活动的重要场所&#xff0c;除了日常锻炼的人们以外&#xff0c;一旦举行活动都是人满为患。随着人们日益提高的体育需求&#xff0c;传统体育馆的设施已经无法满足大众的要求&#xff0c;为此旭帆科技特根据传统体育馆存在的几…

适合小团队的任务管理软件有哪些?5款小团队使用最多的项目工具

众所周知&#xff0c;在团队管理中&#xff0c;通过使用适当的任务管理软件&#xff0c;团队可以更高效地组织、分配和跟踪任务&#xff0c;提高工作效率和团队协作。然而&#xff0c;在市场上有许多不同的任务管理工具可供选择&#xff0c;因此选择适合团队的最佳工具可能会成…

设计师必备的插画设计素材网站

趋势很快就会下降&#xff0c;而新浪潮很快就会席卷而来。 品牌和设计师都意识到&#xff0c;他们需要放松僵化的自信&#xff0c;成为开放的团队合作伙伴。如果你对创意工作或趋势保持好奇&#xff0c;这些创意网站会让你摆脱混合的网页搜索推荐&#xff0c;帮助你获得最专业…

ICLR 2024 再现抄袭风波!原作者发帖实锤:过半方法都抄了

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 夕小瑶科技说 原创 作者 | 智商掉了一地、ZenMoore 就在上个月末&#xff0c;ICLR 2024 的提交告一段落&#xff0c;在 OpenReview 上已经能够看到目前提交的文章了。虽然评阅结果尚未被发布&#xff0c;…

生成式AI - 大模型(LLM)提示工程(Prompt)技巧

提示工程可以描述为一种艺术形式&#xff0c;为大型语言模型&#xff08;LLMs&#xff09;创建输入请求&#xff0c;以实现预期的输出。以下是创造单个或一系列提示的不同技巧。 由少到多的提示 推理过程是基于证据和推理得出结论。反过来&#xff0c;可以通过为LLM提供一些关于…

【数据结构】模拟实现栈和队列

文章目录 栈&#xff08;Stack&#xff09;栈的概念栈的常用方法模拟实现栈 队列&#xff08;Queue&#xff09;队列的概念队列的常用方法队列的模拟实现循环队列模拟实现 栈&#xff08;Stack&#xff09; 栈的概念 栈是一种特殊的线性表&#xff0c;只允许在固定的一端进行…

CSS背景background八种属性

想必大家对背景不陌生&#xff0c;让我为大家介绍一下吧&#xff01; 属性名简述background-color背景颜色background-image背景图片background-position背景定位background-size背景大小background-repeat背景是否平铺background-attachment背景是否随滚动条固定background-c…

计算机网络【CN】介质访问控制

信道划分介质访问控制 FDMTDMWDMCDM【掌握eg即可】 随机介质访问控制 CSMA 1-坚持CSMA 非坚持CSMA p-坚持CSMA 空闲时 立即发送数据 立即发送数据 以概率P发送数据&#xff0c;以概率1-p推迟到下一个时隙 忙碌时 继续坚持侦听 放弃侦听&#xff0c;等待一个随机的时…

SAP数据元素描述增强修改

数据元素描述增强修改 一、需求 需要将业务伙伴伙伴中的手机字段的描述改为’税局备案电话’。 三、增强实现 使用事务码CMOD&#xff0c;点击转到-》文本增强-》关键字-》更改。 输入数据元素的的字段号码&#xff0c;更改激活即可

从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程【文末送书五本】

从瀑布模式到水母模式&#xff1a;ChatGPT如何赋能软件研发全流程 前言内容简介购买链接作者简介专家推荐读者对象参与方式往期赠书回 &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &#x1f396;️&#x1f396;️:Python领域新星创作者&#xff0c;CSDN实…

Unity的碰撞检测(五)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(四)​​​​​​​”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic&#xff0c;但是Collision Detection属性不同的碰撞检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两…