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 相关文章推荐
删除无限级目录与文件代码共享
Jul 12 PHP
模仿OSO的论坛(一)
Oct 09 PHP
php中Smarty模板初体验
Aug 08 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 PHP
thinkphp框架类库扩展操作示例
Nov 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
jQuery each()小议
2010/03/18 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
原生js实现瀑布流效果
2020/03/09 Javascript
js实现简单点赞操作
2020/03/17 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
python实现矩阵乘法的方法
2015/06/28 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python多线程原理与用法详解
2018/08/20 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
大门门卫岗位职责
2013/11/30 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
保护环境倡议书100字
2014/05/19 职场文书
会计毕业生自荐书
2014/06/12 职场文书
卖房协议书样本
2014/10/30 职场文书
校运会班级霸气口号
2015/12/24 职场文书