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 相关文章推荐
PHP下打开URL地址的几种方法小结
May 16 PHP
PHP $_FILES函数详解
Mar 09 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
解析php中heredoc的使用方法
Jun 17 PHP
解析MySql与Java的时间类型
Jun 22 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
php一个解析字符串排列数组的方法
May 12 PHP
php阳历转农历优化版
Aug 08 PHP
PHP中phar包的使用教程
Jun 14 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 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中对数据库操作的封装
2006/10/09 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
php7性能提升的原因详解
2019/10/13 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
2013/12/27 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
Python Web服务器Tornado使用小结
2014/05/06 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
python正则表达式之对号入座篇
2018/07/24 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
Python异常处理例题整理
2019/07/07 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
python 实现简易的记事本
2020/11/30 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
高三自我鉴定怎么写
2013/10/19 职场文书
大学生职业生涯规划书前言
2014/01/09 职场文书
承诺书模板
2014/08/30 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python