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程序--记数器
Oct 09 PHP
php 攻击方法之谈php+mysql注射语句构造
Oct 30 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
php array_unique之后json_encode需要注意
Jan 02 PHP
很让人受教的 提高php代码质量36计
Sep 05 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
php中隐形字符65279(utf-8的BOM头)问题
Aug 16 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP简单验证码功能机制实例详解
Mar 27 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字符串函数的总结分析
2013/06/05 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
PHP在线书签系统分享
2016/01/04 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
在django模板中实现超链接配置
2019/08/21 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
python 解决函数返回return的问题
2020/12/05 Python
python装饰器代码深入讲解
2021/03/01 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
招商经理岗位职责
2013/11/16 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
《雪儿》教学反思
2014/04/17 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
优秀党员申报材料
2014/12/18 职场文书
办公室主任岗位职责
2015/01/31 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书