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 相关文章推荐
学习php笔记 字符串处理
Oct 19 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
用来解析.htpasswd文件的PHP类
Sep 05 PHP
深入php 正则表达式的学习探讨
Jun 06 PHP
改写ThinkPHP的U方法使其路由下分页正常
Jul 02 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
php数据库操作model类(使用__call方法)
Nov 16 PHP
php_pdo 预处理语句详解
Nov 21 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
php头像上传预览实例代码
May 02 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
Laravel ORM 数据model操作教程
Oct 21 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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
php 正则表达式小结
2009/08/31 PHP
php实现网站插件机制的方法
2009/11/10 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
vue中appear的用法
2017/08/17 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
python optparse模块使用实例
2015/04/09 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
对Python3 序列解包详解
2019/02/16 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
化学教学随笔感言
2014/02/19 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
java调用Restful接口的三种方法
2021/08/23 Java/Android
MySQL读取JSON转换的方式
2022/03/18 MySQL