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 的超简单方法[转]
Sep 24 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
Oct 27 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 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和MySQL保存和输出图片
2006/10/09 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
js对象的比较
2011/02/26 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
python删除列表内容
2015/08/04 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
教师推荐信范文
2013/11/24 职场文书
工程材料采购方案
2014/05/18 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
学校推普周活动总结
2015/05/07 职场文书
女儿满月酒致辞
2015/07/29 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
Python实现抖音热搜定时爬取功能
2022/03/16 Python
Python如何使用循环结构和分支结构
2022/04/13 Python