• PHP递归实现无限级分类


     什么是无限级分类?

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

    应用场景:

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

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

     

    1. // 模拟分类数据
    2. $categories = array(
    3. array('id' => 1, 'name' => '电子产品', 'parent_id' => 0),
    4. array('id' => 2, 'name' => '手机', 'parent_id' => 1),
    5. array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1),
    6. array('id' => 4, 'name' => '家用电器', 'parent_id' => 0),
    7. array('id' => 5, 'name' => '电视', 'parent_id' => 4),
    8. array('id' => 6, 'name' => '冰箱', 'parent_id' => 4),
    9. array('id' => 7, 'name' => '空调', 'parent_id' => 4),
    10. array('id' => 8, 'name' => '服饰', 'parent_id' => 0),
    11. array('id' => 9, 'name' => '男装', 'parent_id' => 8),
    12. array('id' => 10, 'name' => '女装', 'parent_id' => 8),
    13. array('id' => 11, 'name' => '鞋类', 'parent_id' => 0),
    14. array('id' => 12, 'name' => '男鞋', 'parent_id' => 11),
    15. array('id' => 13, 'name' => '女鞋', 'parent_id' => 11),
    16. array('id' => 14, 'name' => '数码产品', 'parent_id' => 1),
    17. array('id' => 15, 'name' => '相机', 'parent_id' => 14),
    18. array('id' => 16, 'name' => '摄像机', 'parent_id' => 14),
    19. array('id' => 17, 'name' => '办公用品', 'parent_id' => 0),
    20. array('id' => 18, 'name' => '文具', 'parent_id' => 17),
    21. array('id' => 19, 'name' => '办公设备', 'parent_id' => 17),
    22. array('id' => 20, 'name' => '电脑配件', 'parent_id' => 1),
    23. array('id' => 21, 'name' => '显示器', 'parent_id' => 20),
    24. array('id' => 22, 'name' => '内存条', 'parent_id' => 20),
    25. array('id' => 23, 'name' => '游戏机', 'parent_id' => 1),
    26. array('id' => 24, 'name' => 'PS5', 'parent_id' => 23),
    27. array('id' => 25, 'name' => 'Switch', 'parent_id' => 23),
    28. );
    29. // 递归处理分类数据
    30. function buildTree($categories, $parent_id = 0) {
    31. $tree = array();
    32. foreach ($categories as $category) {
    33. if ($category['parent_id'] == $parent_id) {
    34. $children = buildTree($categories, $category['id']);
    35. if ($children) {
    36. $category['children'] = $children;
    37. }
    38. $tree[] = $category;
    39. }
    40. }
    41. return $tree;
    42. }
    43. // 构建树形结构
    44. $tree = buildTree($categories);
    45. // 显示分类数据
    46. function showTree($tree, $indent = 0) {
    47. foreach ($tree as $category) {
    48. echo str_repeat("--", $indent) . $category['name'] . "
      "
      ;
    49. if (isset($category['children'])) {
    50. showTree($category['children'], $indent + 1);
    51. }
    52. }
    53. }
    54. // 调用函数显示树形结构
    55. showTree($tree);

  • 相关阅读:
    VScode写C++读文件时遇到的问题
    html语音播报功能问题
    Kotlin语法入门-密封类和密封接口(11)
    Hack_Kid
    818专业课【考经】—《信号系统》之章节概要:第九章 系统的状态变量分析法
    奥迪AUDI EDI INVOIC发票报文详解
    web前端期末大作业实例 (1500套) 集合
    数学基础(二)逆矩阵、伪逆矩阵、最小二乘解、最小范数解
    智能批量重命名,轻松删除文件名后缀数字并添加编号!
    RocketMq(五)消息机制
  • 原文地址:https://blog.csdn.net/weixin_39934453/article/details/134084253