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书写安全的脚本代码
Feb 05 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
php使用ICQ网关发送手机短信
Oct 30 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 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
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
php学习之运算符相关概念
2011/06/09 PHP
php中常用的预定义变量小结
2012/05/09 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
php读取csc文件并输出
2015/05/21 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
Mootools 1.2教程 函数
2009/09/15 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
Python中的各种装饰器详解
2015/04/11 Python
简单了解python模块概念
2018/01/11 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python识别验证码图片实例详解
2020/02/17 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
电子商务专业自我鉴定
2013/12/18 职场文书
教导处工作制度
2014/01/18 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫