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
Dec 14 PHP
php懒人函数 自动添加数据
Jun 28 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
将php数组输出html表格的方法
Feb 24 PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
如何使用php实现评委评分器
Jul 31 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
php注册登录系统简化版
Dec 28 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 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
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
初步剖析C语言编程中的结构体
2016/01/16 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
Django权限控制的使用
2021/01/07 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
打架检讨书100字
2014/01/08 职场文书
《散步》教学反思
2014/03/02 职场文书
财务管理专业求职信
2014/06/11 职场文书
上海世博会口号
2014/06/19 职场文书
2014年财务科工作总结
2014/11/11 职场文书
优秀教师申报材料
2014/12/16 职场文书
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL