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中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
PHP无限分类(树形类)
Sep 28 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
PHP中feof()函数实例测试
Aug 23 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 PHP
laravel使用redis队列实例讲解
Mar 23 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 循环删除无限分类子节点的实现代码
2013/06/21 PHP
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
node内置调试方法总结
2018/02/22 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
Python之PyUnit单元测试实例
2014/10/11 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python二元赋值实用技巧解析
2019/10/25 Python
python实现mean-shift聚类算法
2020/06/10 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
pymysql模块使用简介与示例
2020/11/17 Python
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
四年级下册教学反思
2014/02/01 职场文书
秋季运动会广播稿
2014/02/22 职场文书
网络宣传方案
2014/03/15 职场文书
慈善晚会策划方案
2014/05/14 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python