php树型类实例


Posted in PHP onDecember 05, 2014

本文实例讲述了php树型类。分享给大家供大家参考。具体分析如下:

该实例原理简单,学过数据结构的一看就明白是什么道理了,不过今天在使用时数据中出现了子节点id(71)小于父节点id(104).导致部分子节点没被存储入数组,修改了一下,实例代码如下:

<?php 

class tree 

{ 

    var $data = array(); 

    var $child = array(-1=>array()); 

    var $layer = array(-1=>-1); 

    var $parent = array(); 

    var $num = array(); 

  

    function setnode($id, $parent, $value,$num=0) 

    { 

        $parent = $parent ? $parent : 0; 

  

        $this->data[$id]  = $value; 

        $this->num[$id]      = $num; 

        if (!isset($this->child[$id])) $this->child[$id] = array(); 

        $this->child[$parent][] = $id; 

        $this->parent[$id]  = $parent; 

  

        if (!isset($this->layer[$parent]) && $parent == 0) 

        { 

           $this->layer[$id] = 0; 

        } 

        else 

        { 

            $this->layer[$id] = $this->layer[$parent] + 1; 

        } 

    } 

  

    function getlist(&$tree, $root= 0) 

    { 

        foreach ($this->child[$root] as $key=>$id) 

        { 

            $tree[] = $id; 

            if($this->child[$id]) $this->getlist($tree, $id); 

        } 

    } 

  

    function getvalue($id) 

    { 

   if($this->layer[$id]==0) 

   { 

    return $this->data[$id]; 

   } 

   else 

   { 

    return $leftmar.$this->data[$id]; 

   } 

    } 

  

    function getnum($id) 

    { 

   return $this->num[$id]; 

    } 

  

    function getbitvalue($id) 

    { 

   return $this->data[$id]; 

    } 

  

    function getlayer($id, $space = false) 

    { 

        return $space ? str_repeat($space, $this->layer[$id]) : $this->layer[$id]; 

    } 

  

    function getparent($id) 

    { 

        return $this->parent[$id]; 

    } 

  

    function getparents($id) 

    { 

        while ($this->parent[$id] != -1) 

        { 

            $id = $parent[$this->layer[$id]] = $this->parent[$id]; 

        } 

  

        ksort($parent); 

        reset($parent); 

  

        return $parent; 

    } 

  

    function getchild($id) 

    { 

        return $this->child[$id]; 

    } 

  

    function getchilds($id = 0) 

    { 

        $child = array($id); 

        $this->getlist($child, $id); 

  

        return $child; 

    } 

  

    function printdata() 

    { 

        return $this->layer; 

    } 

} 

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
header()函数使用说明
Nov 23 PHP
用 PHP5 轻松解析 XML
Dec 04 PHP
mysql 全文搜索 技巧
Apr 27 PHP
php动态生成JavaScript代码
Mar 09 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
php实现在服务器端调整图片大小的方法
Jun 16 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
深入了解PHP中的Array数组和foreach
Nov 06 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 PHP
Yii框架form表单用法实例
Dec 04 #PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 #PHP
Yii分页用法实例详解
Dec 04 #PHP
Yii配置文件用法详解
Dec 04 #PHP
yii实现图片上传及缩略图生成的方法
Dec 04 #PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 #PHP
yii的CURD操作实例详解
Dec 04 #PHP
You might like
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
网页自动跳转代码收集
2009/09/27 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
python3+PyQt5实现拖放功能
2018/04/24 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
python获取栅格点和面值的实现
2020/03/10 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
美国电视购物:QVC
2017/02/06 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
2013年入党人员的自我鉴定
2013/10/25 职场文书
优秀团队获奖感言
2014/02/19 职场文书
求职信怎么写范文
2014/05/26 职场文书
律师函格式范本
2015/05/27 职场文书
企业法律事务工作总结
2015/08/11 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
Python中字符串对象语法分享
2022/02/24 Python
CentOS MySql8 远程连接实战
2022/04/19 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL