首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无限分类之子孙与家谱实现

无限分类在日常开发中很常见至少对于PHP程序员来说,如网站常见的商品分类、面包屑、省市联动、新闻分类等等,一个栏目又包含很多个子栏目子栏目又包含很多子栏目...。...这里介绍无限分类的子孙与家谱实现。 子孙数 子孙是用递归查找栏目的所有子类,以及子类的子类,子类的子类的子类。...[id] => 11 [name] => 南部县 [parent] => 5 ) ) 所有地区被打印出来,并且正常分类...---罗江区 --------旌阳区 ----南充 --------营山县 ------------星火镇 ----------------七涧乡 --------嘉陵区 --------南部县 家谱...家谱利用递归查找子栏目的父级栏目,父级栏目的父级栏目,父级栏目的父级栏目的父级栏目...

51520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    laravel生成无限分类

    无限分类是很常见的功能,算法的好坏对于获取分类的性能起到决定性的作用。...尤其当分类数据和层级多时,一个糟糕的算法将使服务器不堪重负 以下用laravel实现无限分类功能,包括: 数据表设计 填充模拟数据 生成分类 分类的后台维护 数据表设计 字段名 描述 id 主键id...name 类目名称 parent_id 父类目 ID is_directory 是否拥有子类目 level 当前类目层级 path 该类目所有父类目 id 为什么要用level与path 无限分类中...目录 场景1:查询蓝牙耳机的所有祖先类目 根据path字段的值获取其祖先id为[1, 2],用 Category::whereIn('id', [1, 2])->orderBy('level')->get...数据填充结果 生成分类 分类是一个通用的功能,适合将其封装为一个服务,创建CategoryService类

    2.8K40

    thinkphp5实现无限分类

    首先声明一下,我们采用递归的方式来实现无限分类。但无限分类的实现,不是只是递归一种方式,还有一种是全路径方式,也可以实现,不过,这种方式通常用在全路径导航菜单中。...所以,这里我们还是用最常见的递归函数来实现:无限分类。...首先我们先创建一个静态方法:getCate,为什么要静态方式,因为静态方法执行效率高,不需要实例化,而且,分类查询是使用非常频繁的操作,很多查询都要依赖分类查询的结果。.../** * @param int $pid: 当前分类的父id * @param array $result:引用返回值 * @param int $blank:设置分类之间的显示提示...::all(['pid'= $pid]); //2.自定义分类名称前面的提示信息 $blank += 2; //3.遍历分类表 foreach ($res as $key =

    1.1K30

    不用递归生成无限层级的

    偶然间,在技术群里聊到生成无限层级的老话题,故此记录下,n年前一次生成无限层级的解决方案 业务场景 处理国家行政区域的,省市区,最小颗粒到医院,后端回包平铺数据大小1M多,前端处理数据后再渲染..."id": 4001, "name": "杭州市第一人民医院", "parentId": 3001, }, // 其他略 ] 第一版:递归处理...常规处理方式 // 略,网上一抓一把 第二版:非递归处理 改进版处理方式 const buildTree = (itemArray, { id = 'id', parentId = 'parentId...)); // 返回顶层数据 return String(item[parentId]) === topLevelId; }); }; 时间复杂度:O(n^2) 第三版:非递归处理...topLevelId)) { topLevelResult.push(item) } } return topLevelResult; } 时间复杂度:O(n) x下篇分享不用递归无限层级取交集

    1.1K20

    PHP无限分类函数封装与应用

    ASC,id ASC        //这里的排序是至关重要的 Step 3、查询出的结果是一个常规的二维数组,如下图: ps:pid就是parent_id,这里是举个例子,下文一样 Step 4、封装的无限分类数组处理函数...: /**      * 无限分类      *      * @access public      * @param Array $data      *            //数据库里获取的结果集...     * @param Int $pid      * @param Int $count      *            //第几级分类      * @return Array $treeList...     */      // 存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空     public static $treeList =...    ├  {$dlist.class_name} Step 8、最终效果:     到这里就实现了一个无限下级的效果

    1.6K130
    领券