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 相关文章推荐
Discuz!下Memcache缓存实现方法
May 28 PHP
header跳转和include包含问题详解
Sep 08 PHP
php var_export与var_dump 输出的不同
Aug 09 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
php 中奖概率算法实现代码
Jan 25 PHP
PHP convert_cyr_string()函数讲解
Feb 13 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
js函数的延迟加载实现代码
2012/10/11 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
python3 xpath和requests应用详解
2020/03/06 Python
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
怎么写好自荐信
2013/10/30 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
优秀家长事迹材料
2014/05/17 职场文书
欢迎领导检查标语
2014/06/27 职场文书
小学班级特色活动方案
2014/08/31 职场文书
高三复习计划
2015/01/19 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL