♖背景 最近复习算法,在此对无限级分类的实现方法稍作整理,当然也是参考了道友的经验,目测适合实际的项目应用,当然,也有不少公司的笔试题还会涉及到呢,有何问题,欢迎各位道友指摘 … 操作环境:Win10...首先,实现无限级分类的方式有: 以父ID设计,运用递归实现的方式 以全路径实现的无限分类方式 ②....父ID 方式 核心处理代码如下,注意参数备注信息,便于正确的调用 /** * 数据库设计 递归方式 获取无限极分类数据 由上到下进行获取 * @param int $pid...deepCatesForDown(0,6); $this->assign('cateListDown',$cateListDown); $this->display(); 前端Html数据显示参考: 递归方式获取 无限级分类数据...全路径实现方式 对应参考上面的介绍方式,核心处理代码如下 /** * 全路径方式 获取无限极分类数据 由上到下进行获取 * @return array */ public
导读:说到无限极分类,这个在程序中是常见的一个功能点了。实现的方式也有很多种,今天着重分享一下涉及到数据库的无线分类,可以使用递归处理,也可以使用循环查询数据库处理。...但是我们考虑到数据库的性能问题,都不建议采用循环查库。都是直接设计好数据表,直接查库,通过代码层实现。 1.我们实现准备好数据表,代码结构如下。..., 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就是顶级分类中的...下面分享自己使用该demo实现的。
近开发商品功能,在尝试递归和引用方式后,蓦然回首,突然发现 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 /** +------------------------------------------------ 通用的树型类 +----------...
首先声明一下,我们采用递归的方式来实现无限分类。但无限分类的实现,不是只是递归一种方式,还有一种是全路径方式,也可以实现,不过,这种方式通常用在全路径导航菜单中。...所以,这里我们还是用最常见的递归函数来实现:无限分类。...首先我们先创建一个静态方法:getCate,为什么要静态方式,因为静态方法执行效率高,不需要实例化,而且,分类查询是使用非常频繁的操作,很多查询都要依赖分类查询的结果。.../** * @param int $pid: 当前分类的父id * @param array $result:引用返回值 * @param int $blank:设置分类之间的显示提示...::all(['pid'= $pid]); //2.自定义分类名称前面的提示信息 $blank += 2; //3.遍历分类表 foreach ($res as $key =
摘要 在实际项目中经常要用到无限级分类,如多级分类、导航表等。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标识,用于无限级分类...' ); 2、PHP 代码实现 $data = $m->field("*, concat(path,',',id) as paths ")->order('paths')->select(); foreach...select-box"> 顶级分类
本文实例讲述了php无限极分类实现方法。分享给大家供大家参考,具体如下: 今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种。...首先我把数据库表给大家看看,数据库是tasks,数据库表也是tasks ? 第一种方法(数组法) 这种方法其实是先把所有的数据查询出来,重点在于生成的二维数组 <?...php //分类方法 function make_list($parent,$deep = 0){ global $tasks;//申明全局变量 global $strArr;/...if(isset($tasks[$key])){ make_list($tasks[$key],++$deep);//递归调用函数 } } } //数据库连接
无限级分类数据 ---- 本文章中的算法使用的都是以下数据 站长源码网 $array = [ 2....使用引用算法转为无限级分类树 ---- $data = getTree($data); /** 收藏 | 0点赞 | 0打赏
本文实例讲述了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程序员来说,如网站常见的商品分类、面包屑、省市联动、新闻分类等等,一个栏目又包含很多个子栏目子栏目又包含很多子栏目...。...这里介绍无限分类的子孙树与家谱树实现。 子孙数 子孙树是用递归查找栏目的所有子类,以及子类的子类,子类的子类的子类。...[id] => 11 [name] => 南部县 [parent] => 5 ) ) 所有地区被打印出来,并且正常分类
本文实例讲述了laravel 框架实现无限级分类的方法。...models\wxj; use Illuminate\Support\Facades\DB; use Session; class Wxjlx { public function r(){ //输出数据库的所有内容...$pid参数是数据库pid $le参数是为了区分显示级别的 public function fl($data,$pid=0,$le=0){ //创建一个静态数组保存数据 static $array...$p=new Wxjlx(); //调用模型方法 $a=$p- r(); //将数据返回视图 return view('wxj/r',['list'= $a]); } } 视图中的方法,实现效果...》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
经常在各大论坛或新闻板块详情页面下边看到评论功能,当然不单单是直接发表评论内容那么简单,可以对别人的评论进行回复,别人又可以对你的回复再次评论或回复,如此反复,理论上可以说是没有休止,从技术角度分析很容易想到运用无限级分类技术存储数据...,运用递归获取评论层级结构数据,运用ajax实现评论页面交互,这里用thinkphp框架做个简单的demo练练手,为了简化流程这里第三级评论开始停止回复,当然只要在这个基础上稍作修改就可以实现无限回复功能...页面操作细节:点击某个评论的回复按钮时,显示回复文本输入框,同时其他评论的回复文本输入框消失,当再次点击该回复按钮时,该文本框消失 4.在最后一级评论(这里设置是第三级)关闭回复功能 5.即时显示评论总数 二、实现思路及细节...统计评论总数 $data['num']= $num; }else{ $data["error"] = "0"; } echo json_encode($data); } 3.view层实现...html lang="en" <head <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" <title php无限级分类实战
反过来呢,一个下级分类能够属于几个上级分类呢?这个并不确定,得看具体的业务需求。如果是多个实现上会更加复杂,为了讨论层级设计,这里先限定每个分类仅有一个上级分类。...20190523135518.png 表中 pid 即直属上级分类的 id,顶级分类设为 0.这种方案简单易懂,仅用一个字典,没有冗余信息,存储空间占用极小,在数据库层面是一个很好的设计。...方案三:基于ClosureTable的无限级分类存储 另建一张表存储节点之间的关系,其中包含了任何两个有关系的节点的关联信息: ?...下面看看如何用用它来实现我们的需求。...总结 ClosureTable是一种比较完美的解决方案,对于无限分层有很好的适应性,比较适用于大型系统。
无限级分类是很常见的功能,算法的好坏对于获取分类树的性能起到决定性的作用。...尤其当分类数据和层级多时,一个糟糕的算法将使服务器不堪重负 以下用laravel实现无限级分类功能,包括: 数据表设计 填充模拟数据 生成分类树 分类树的后台维护 数据表设计 字段名 描述 id 主键id...name 类目名称 parent_id 父类目 ID is_directory 是否拥有子类目 level 当前类目层级 path 该类目所有父类目 id 为什么要用level与path 无限级分类中...,我们经常需要获取一个分类的所有祖先类目或者后代类目,以及判断两个类目是否存在层级关系。...数据填充结果 生成分类树 分类树是一个通用的功能,适合将其封装为一个服务,创建CategoryService类
各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了。 什么是无限级分类?...无限级分类是一种分类技巧,例如部门组织,文章分类,学科分类等常用到无限级分类,将其简单理解成分类就好了。...其实我们仔细想一下,生活中的分类简直太多了,衣服可以分为男装和女装,也可以分为上衣和裤子,也可以根据年龄段分类。分类无处不在,分类显得“无限”。我这里就不说无限分类的必要性了。...无限级分类原理简介 无限分类看似”高大上”,实际上原理是非常简单的 。无限分类不仅仅需要代码的巧妙性,也要依托数据库设计的合理性。要满足无限级分类,数据库需要有两个必须的字段,id,pid。...php无限级分类是经常要用到的,本人以前一直用的是已经写好的,所以没仔细去研究过,下面是一个使用递归实现的简单的php无限级分类的函数;也许这不是最优的方法,但对于一般的应用也足够了。
<html lang="en" <head <meta charset="UTF-8" <title Document</title </head <body <h1 四个字段的无限分类...</h1 <form action="{:url('add')}" method="post" 请选择上级分类:<select name="pid" <option value="0" 顶级分类...4个字段 /* ID PID NAME PATH 1 0 服装 0-1 2 0 游戏 0-2 3 1 男装 0-1-3 4 3 上衣 0-1-3-4 */ }} 还有一个没有写完的递归无限分类...$pid)- select(); foreach($data as &$cate){ #通过该分类的主键id查询该分类的子类 $cate['cates']=$this- getTree($cate...=$this- getOption($case['cases']); }else{ $i=0; } return $opt; } } } 以上这篇在TP5数据库中四个字段实现无限分类的示例就是小编分享给大家的全部内容了
解释核心:顶级分类0下面可以有无限个子类。这就叫无限极分类。简介来说就是中国:大的范围下>>的小范围:海南吧。...想这张图一样,核心在于,从顶级分类pid=0开始起,顶级分类中的id是找到所有的相同的pid为子类,然后这些子类的id又会找到下一层级的pid(顶级分类pid=0除外,因为他上面已经没有id了)。...=""; } echo displayCate(0,2); 数据库: -- phpMyAdmin SQL Dump -- version 4.8.5 -- https://www.phpmyadmin.net...40101 SET NAMES utf8mb4 */; -- -- 数据库: `rageframe` -- -- ------------------------------------------
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169571.html原文链接:https://javaforall.cn
static $i; echo $i; $i++; if($i < 10){ deeploop($i); } } deeploop(); 5.说白了递归就是一个循环,用循环实现和递归实现是同样的效果...以上所述是小编给大家介绍的PHP无限极分类原理详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!
本文实例讲述了php+mysql实现的无限分类方法类定义与使用。...分享给大家供大家参考,具体如下: 创建数据库以及表 CREATE DATABASE `sortclass`DEFAULT CHARSET utf8; CREATE TABLE IF NOT EXISTS...`pid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; header("Content-type: text/html; charset=utf-8"); //连接数据库...mysql_connect('localhost','root','eric') or die(mysql_error()); mysql_select_db('sortclass',$link); //无限分类类库.../ <input type="hidden" id="cid" name="cid" / <input type="submit" value="Submit" / </form <h3 移动分类
领取专属 10元无门槛券
手把手带您无忧上云