php 无限分类的树类代码


Posted in PHP onDecember 03, 2009
<?php 
/** 
by lenush; 
*/ 
class Tree 
{ 
var $data = array(); 
var $child = array(-1=>array()); 
var $layer = array(-1=>-1); 
var $parent = array(); function Tree ($value) 
{ 
$this->setNode(0, -1, $value); 
} // end func 
function setNode ($id, $parent, $value) 
{ 
$parent = $parent?$parent:0; 
$this->data[$id] = $value; 
$this->child[$id] = array(); 
$this->child[$parent][] = $id; 
$this->parent[$id] = $parent; 
if (!isset($this->layer[$parent])) 
{ 
$this->layer[$id] = 0; 
} 
else 
{ 
$this->layer[$id] = $this->layer[$parent] + 1; 
} 
} // end func 
function getList (&$tree, $root= 0) 
{ 
foreach ($this->child[$root] as $key=>$id) 
{ 
$tree[] = $id; 
if ($this->child[$id]) $this->getList($tree, $id); 
} 
} // end func 

function getValue ($id) 
{ 
return $this->data[$id]; 
} // end func 

function getLayer ($id, $space = false) 
{ 
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id]; 
} // end func 
function getParent ($id) 
{ 
return $this->parent[$id]; 
} // end func 
function getParents ($id) 
{ 
while ($this->parent[$id] != -1) 
{ 
$id = $parent[$this->layer[$id]] = $this->parent[$id]; 
} 
ksort($parent); 
reset($parent); 
return $parent; 
} // end func 
function getChild ($id) 
{ 
return $this->child[$id]; 
} // end func 
function getChilds ($id = 0) 
{ 
$child = array($id); 
$this->getList($child, $id); 
return $child; 
} // end func 
} // end class 

//new Tree(根目录的名字); 
//根目录的ID自动分配为0 
$Tree = new Tree('目录导航'); 
//setNode(目录ID,上级ID,目录名字); 
$Tree->setNode(1, 0, '目录1'); 
$Tree->setNode(2, 1, '目录2'); 
$Tree->setNode(3, 0, '目录3'); 
$Tree->setNode(4, 3, '目录3.1'); 
$Tree->setNode(5, 3, '目录3.2'); 
$Tree->setNode(6, 3, '目录3.3'); 
$Tree->setNode(7, 2, '目录2.1'); 
$Tree->setNode(8, 2, '目录2.2'); 
$Tree->setNode(9, 2, '目录2.3'); 
$Tree->setNode(10, 6, '目录3.3.1'); 
$Tree->setNode(11, 6, '目录3.3.2'); 
$Tree->setNode(12, 6, '目录3.3.3'); 
//getChilds(指定目录ID); 
//取得指定目录下级目录.如果没有指定目录就由根目录开始 
$category = $Tree->getChilds(); 
//遍历输出 
foreach ($category as $key=>$id) 
{ 
echo $Tree->getLayer($id, '|-').$Tree->getValue($id)."<br />\n"; 
} 
?>
PHP 相关文章推荐
把从SQL中取出的数据转化成XMl格式
Oct 09 PHP
用PHP+java实现自动新闻滚动窗口
Oct 09 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
php返回当前日期或者指定日期是周几
May 21 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
May 20 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 PHP
php zip文件解压类代码
Dec 02 #PHP
PHP5 面向对象(学习记录)
Dec 02 #PHP
php smarty模版引擎中的缓存应用
Dec 02 #PHP
php 一元分词算法
Nov 30 #PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 #PHP
php读取html并截取字符串的简单代码
Nov 30 #PHP
php 获取客户端的真实ip
Nov 30 #PHP
You might like
PHP中for与foreach的区别分析
2011/03/09 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
详细探究Python中的字典容器
2015/04/14 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
python处理RSTP视频流过程解析
2020/01/11 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
销售行政专员职责
2014/01/03 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
保护环境建议书300字
2014/05/13 职场文书
搞笑的获奖感言
2014/08/16 职场文书