PHP树结构,实现无限分级
一、从数据库查出来的数据需要id、parentid、level。
id唯一识别栏目,parentid为该栏目所属父类id,level标示该栏目是几级栏目。以下代码就可以实现一个简单的树结构。
public function tree2(){
$r = array(
array(
'id'=>1,
'name'=>'智慧教育',
'parent_id'=>0,
'level'=>0 //一级分类
),
array(
'id'=>2,
'name'=>'学校列表',
'parent_id'=>1,
'level'=>1 //二级分类
),
array(
'id'=>4,
'name'=>'智慧医疗',
'parent_id'=>0,
'level'=>0 //一级分类
),
array(
'id'=>5,
'name'=>'医院列表',
'parent_id'=>4,
'level'=>1 //二级分类
),
array(
'id'=>6,
'name'=>'名医列表',
'parent_id'=>5,
'level'=>2 //三级分类
) );
//输出为select标签:
echo '<h1>PHPTree</h1>';
echo '<select style="width:300px;">';
foreach($r as $item){
echo '<option>';
//根据所在的层次缩进
echo str_repeat('|—',$item['level']);
echo $item['name'];
echo '</option>';
}
echo '</select>';
}
页面效果图是这样的。
aaarticlea/png;base64,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" alt="" />
二、但是一般表结构中是没有level的。
这样就需要多层循环嵌套加if判断,先循环显示父级栏目parentid=0,及它就是一级栏目;然后再循环根据parentid与一级栏目的id判断,如果相等则显示对应的栏目,二级栏目就显示出来啦,以此类推,可以显示所有栏目。但这只适合已知栏目层数且层数不多的情况,因为要根据层数来判断遍历的次数。且如果层数过多,代码量就会很大。
public function tree3(){
//从表中查到所有栏目
$cat = M('category');
$allcat = $cat ->order('listorder ASC') ->select(); //输出select标签
echo '<h2>栏目tree</h2>';
echo '<select style="width:300px;">';
foreach ($allcat as $val) {
if($val[parentid] == 0){
echo '<option>';
echo $val['catname'];
echo '</option>';
}
foreach ($allcat as $value) {
if($val[id] == $value[parentid]){
echo '<option>';
echo '|—'.$value['catname'];
echo '</option>';
}
}
}
......
}
那怎么知道栏目层数,或者怎么判断该栏目下面还有没有子栏目呢?
三、这里采用递归的方式
这样就可以不断重复查询本身的pid等于上一级id的数据,通过判断查到的数据是否为空来判断它有没有子栏目。
还有一个问题就是根据级别设置缩进,这样看着有层次感。那这个怎么实现呢?在php中有一个字符串函数str_repeat(),两个参数,第一个表示要重复的字符串,第二个是重复的次数。
代码片段如下:
//递归实现无限级菜单
public function tree2($pid=0,$level=0){
$cat = M('category');
$data = $cat ->where("parentid = $pid") ->field('id,catname,parentid') ->select(); $level ++;
if(!empty($data)){
$tree = array();
foreach ($data as $val) {
$val['catname'] = str_repeat('|—', $level-1).$val['catname'];
$child = $this ->tree2($val[id],$level);
$tree[] = array('self'=>$val,'child'=>$child,'level'=>$level);
}
}
return $tree;
} function test(){
$allcat = $this ->tree2(0);
dump(json_encode($allcat));
}
上面tree2方法找到了所有栏目,并组装到tree数组中,tree是一个多维数组,现在要从数组中取出所有栏目名称catname,同样递归调用,代码如下:
//遍历找出所有catname
function getcatname($array){
if(is_array($array)){
foreach ($array as $key=>$value ){
if(is_array($value)){
$this ->getcatname($value);
}else{
$temp = array('key'=>$key,'value'=>$value);
if ($temp['key'] == 'catname') {
echo $temp['value']."<br/>";
}
}
}
}
} function test(){
$allcat = $this ->tree2(0);
$this ->getcatname($allcat);
}
页面显示效果图如下:
aaarticlea/png;base64,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" alt="" />
这样就实现了多级栏目的显示。
PHP树结构,实现无限分级的更多相关文章
- 无限分级和tree结构数据增删改【提供Demo下载】
无限分级 很多时候我们不确定等级关系的层级,这个时候就需要用到无限分级了. 说到无限分级,又要扯到递归调用了.(据说频繁递归是很耗性能的),在此我们需要先设计好表机构,用来存储无限分级的数据.当然,以 ...
- 基于react实现无限分级菜单
在开发CMS(内容管理系统)系统时,一般都会用到一个侧边栏或者顶部的二级或者三级菜单,当点击或者鼠标悬浮时,菜单能够随之展开或收起. 本文纯粹为了练习一下react,因此我会在react环境下实现这么 ...
- C#使用二叉树算法设计一个无限分级的树表
效果图: 数据库: 操作树的示意图: 控制器代码: using Dw.Business; using Dw.Entity; using Dw.Utilities; using System; usin ...
- C#无限分级实现,前端WEB页面接收,后台提供层级Json数据
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...
- PHP无限极分类生成树方法,无限分级
你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...
- 无限分级Repeater递归实现:读取一次数据库,使用LINQ2SQL技术,支持排序&显示隐藏
预览效果图: Selenium 数据库结构: id(int) classname(string) parentid(int) sort(int用于显示与排序) 1 家居 0 1 2 家电 0 ...
- 转:打造DropDownList,TreeView,ListBox无限极分类目录树
[csharp] view plaincopyprint? #region DropDownList无限递归显示层次关系 /// <summary> /// 创建无限分级下拉列表框 /// ...
- Java生鲜电商平台-商品无限极目录的设计与架构
Java生鲜电商平台-商品无限极目录的设计与架构 说明:任何一个商品都应该是先属于某一个目录,然后在目录中添加商品,目录理论上最多支持三级,因为级别太多,不容易管理.但是设计中需要设计无限制的级别. ...
- 再讲IQueryable<T>,揭开表达式树的神秘面纱
接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个风生水起,感觉不整个自己的orm都不好意思继续混博客园了(开个玩笑).那么 ...
随机推荐
- Java异常类(Throwable)
一.异常类体系 二.异常类由来与定义 [异常类的由来]:Java把程序在运行时出现的各种不正常情况也看成了对象, 提取属性和行为进行描述,比如异常名称,异常信息,异常发生位置,从而形成了各种异常类 [ ...
- 基于谱聚类的三维网格分割算法(Spectral Clustering)
谱聚类(Spectral Clustering)是一种广泛使用的数据聚类算法,[Liu et al. 2004]基于谱聚类算法首次提出了一种三维网格分割方法.该方法首先构建一个相似矩阵用于记录网格上相 ...
- Sql的连接表补充
连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行. 连接可分为 ...
- [Leetcode] Binary search, Divide and conquer--240. Search a 2D Matrix II
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- Java(17)异常
一.异常 1.1程序执行过程中出现的影响程序运行正常运行的现象. 1.2异常语法 try{ //代码块 }catch(异常类型 e){ }catch(异常类型 e){ }...{ }finally{ ...
- 快速压缩PNG文件在线工具
https://tinypng.com/ 直接拖移要压缩文件即可
- Java基本之数据类型
一.创建一个简单的Java应用程序 public class Code { public static void main(String[]args) { System.out.println(&qu ...
- js删除 object中的空值
var data = { a: 'a', b: '' } 删除 b和''的配对, /** * Delete all null (or undefined) properties from an obj ...
- MongoDB--初始
指定启动目录,以服务形式启动 Mongod --dbpath=XXXXXX --logpath=XXXXXXXX --logappend --serviceName "XXXXX" ...
- Java学习笔记--异常描述
异常描述 1.简介 为了全面了解"异常"的概念,先来分析一个实例.假定要编写一个Java程序,该程序读取用户输入的一行文本,并在终端显示该文本.这里是一个演示Java语言I/O功能 ...