<?php /** +------------------------------------------------ 通用的树型类 +----------...
无限级分类数据 ---- 本文章中的算法使用的都是以下数据 站长源码网 $array = [ 2....使用引用算法转为无限级分类树 ---- $data = getTree($data); /** 收藏 | 0点赞 | 0打赏
无限级分类是很常见的功能,算法的好坏对于获取分类树的性能起到决定性的作用。...尤其当分类数据和层级多时,一个糟糕的算法将使服务器不堪重负 以下用laravel实现无限级分类功能,包括: 数据表设计 填充模拟数据 生成分类树 分类树的后台维护 数据表设计 字段名 描述 id 主键id...name 类目名称 parent_id 父类目 ID is_directory 是否拥有子类目 level 当前类目层级 path 该类目所有父类目 id 为什么要用level与path 无限级分类中...,我们经常需要获取一个分类的所有祖先类目或者后代类目,以及判断两个类目是否存在层级关系。...数据填充结果 生成分类树 分类树是一个通用的功能,适合将其封装为一个服务,创建CategoryService类
导读:说到无限极分类,这个在程序中是常见的一个功能点了。实现的方式也有很多种,今天着重分享一下涉及到数据库的无线分类,可以使用递归处理,也可以使用循环查询数据库处理。..., 0, 'icons/18.gif'), (3, 0, '生活点滴', '记录生活点滴', 0, 'icons/2.gif'), (6, 0, '栀子花开', '青春无限', 0, 'icons/8....'] = getTree($data, $v['cate_Id']); $tree[] = $v; } } return $tree; } // 这里的0就是顶级分类中的
解释核心:顶级分类0下面可以有无限个子类。这就叫无限极分类。简介来说就是中国:大的范围下>>的小范围:海南吧。...想这张图一样,核心在于,从顶级分类pid=0开始起,顶级分类中的id是找到所有的相同的pid为子类,然后这些子类的id又会找到下一层级的pid(顶级分类pid=0除外,因为他上面已经没有id了)。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169571.html原文链接:https://javaforall.cn
近开发商品功能,在尝试递归和引用方式后,蓦然回首,突然发现 laravel 框架有更简单高效的实现方式,无限极分类最佳实践,open code 与大家共享!...int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` varchar(500) DEFAULT '' COMMENT '分类名称...', `status` tinyint(3) unsigned DEFAULT '0' COMMENT '分类状态:0-禁用,1-正常', `created_at` timestamp NULL...// 控制器 $list = GoodsCategory::with('allChildren')->first(); dd($list); 处理后数据: 至此,laravel 框架无限极分类实现完毕...,相比递归和引用实现无限极分类的两种方式,是不是简单高效很多呢,关于更多 laravel 特性,欢迎评论区留言探讨。
以上所述是小编给大家介绍的PHP无限极分类原理详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!
摘要 在实际项目中经常要用到无限级分类,如多级分类、导航表等。PHP 实现无限级分类通常有两种实现方式,一种是利用path字段(pid+id)标识当前层级;另一种是利用递归循环pid的方式。...PHP 实现无限级分类 – path标识 1、数据库设计 --创建分类表 create table `b_category`( `id` int primary key not null auto_increment...not null default 0 comment '等级', `pid` int comment '父级id', `path` varchar(10) comment 'pid+,+id标识,用于无限级分类...select-box"> 顶级分类
首先声明一下,我们采用递归的方式来实现无限分类。但无限分类的实现,不是只是递归一种方式,还有一种是全路径方式,也可以实现,不过,这种方式通常用在全路径导航菜单中。...所以,这里我们还是用最常见的递归函数来实现:无限分类。...首先我们先创建一个静态方法:getCate,为什么要静态方式,因为静态方法执行效率高,不需要实例化,而且,分类查询是使用非常频繁的操作,很多查询都要依赖分类查询的结果。.../** * @param int $pid: 当前分类的父id * @param array $result:引用返回值 * @param int $blank:设置分类之间的显示提示...::all(['pid'= $pid]); //2.自定义分类名称前面的提示信息 $blank += 2; //3.遍历分类表 foreach ($res as $key =
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、最终效果: 到这里就实现了一个无限下级的效果
本文实例讲述了PHP实现无限极分类生成分类树的方法。...分享给大家供大家参考,具体如下: 现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就是如下的格式: $arr = array( array..."pid" => 2 , 'cat' => '栏目十三'), array("id" => 14, "pid" => 13 , 'cat' => '栏目十四') ); 不多说,直接上处理代码: //生成无限极分类树...v){ $refer[$v['id']] = & $arr[$k]; //创建主键的数组引用 } foreach($arr as $k => $v){ $pid = $v['pid']; //获取当前分类的父级
本文实例讲述了php无限极分类实现方法。分享给大家供大家参考,具体如下: 今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种。...php //分类方法 function make_list($parent,$deep = 0){ global $tasks;//申明全局变量 global $strArr;/
php //分类管理 namespace app\admin\Controller; use think\Db; use think\Controller; class CategoryController...extends Controller { /** * 分类列表页(递归) */ public function category_list() { header('content-type...{/foreach} </table <div class="paging" 此处是分页</div </div 以上这篇tp5递归 无限级分类详解就是小编分享给大家的全部内容了
本文实例为大家分享了thinkphp5使用无限极分类的具体代码,供大家参考,具体内容如下 1. 先根据普通递归完成无限极分类 2.
laravel-nestedset是一个关系型数据库遍历树的larvel4-5的插件包
$v; unset($data[$k]); tree($data,$v['id'],$level+1); } } return $arr; } 递归就是先查找顶级分类...,然后通过递归查找其顶级分类下的子类。...如果有第二个顶级分类的话,他会先unset( [k])先删除已经遍历过的,就能得到第二个顶级分类 -- phpMyAdmin SQL Dump -- version 4.8.5 -- https://
网上相关例子基本都是 ztree,然后个人去看了看官网,看了半天没找到合适又简单的,ztree,由于界面不适合项目里面的,要是修改他的样式我还可能出现更多的错误...
本文实例讲述了laravel 框架实现无限级分类的方法。
无限分类在日常开发中很常见至少对于PHP程序员来说,如网站常见的商品分类、面包屑、省市联动、新闻分类等等,一个栏目又包含很多个子栏目子栏目又包含很多子栏目...。...这里介绍无限分类的子孙树与家谱树实现。 子孙数 子孙树是用递归查找栏目的所有子类,以及子类的子类,子类的子类的子类。...[id] => 11 [name] => 南部县 [parent] => 5 ) ) 所有地区被打印出来,并且正常分类
领取专属 10元无门槛券
手把手带您无忧上云