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 相关文章推荐
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
使用数据库保存session的方法
Oct 09 PHP
phpmyadmin的#1251问题
Nov 25 PHP
PHP $_SERVER详解
Jan 16 PHP
PHP 函数语法介绍一
Jun 14 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
php获取文件内容最后一行示例
Jan 09 PHP
destoon实现首页显示供应、企业、资讯条数的方法
Jul 15 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
php中foreach结合curl实现多线程的方法分析
Sep 22 PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 PHP
PHP7移除的扩展和SAPI
Mar 09 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使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
jQueryUI如何自定义组件实现代码
2010/11/14 Javascript
生成二维码方法汇总
2014/12/26 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
python协程之动态添加任务的方法
2019/02/19 Python
python 实现简单的FTP程序
2019/12/27 Python
Python 高效编程技巧分享
2020/09/10 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
应聘教师自荐信
2013/10/12 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
青年志愿者活动总结
2014/04/26 职场文书
给学校建议书范文
2014/05/13 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2014年车间工作总结
2014/11/21 职场文书
立春观后感
2015/06/18 职场文书
学校食堂管理制度
2015/08/04 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript