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函数
May 31 PHP
PHP合并静态文件详解
Nov 14 PHP
php随机取mysql记录方法小结
Dec 27 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
深入理解PHP中的count函数
May 31 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
微信自定义分享php代码分析
Nov 24 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
PHP安装BCMath扩展的方法
Feb 13 PHP
PHP echo()函数讲解
Feb 15 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 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 ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
ajax异步请求详解
2017/01/06 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
2019/05/10 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
常用python数据类型转换函数总结
2014/03/11 Python
深入Python函数编程的一些特性
2015/04/13 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
pymysql模块使用简介与示例
2020/11/17 Python
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
中班开学寄语
2014/04/04 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2014年科普工作总结
2014/12/06 职场文书
文明单位汇报材料
2014/12/24 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python