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 相关文章推荐
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
php中final关键字用法分析
Dec 07 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 PHP
PHP实现简易图形计算器
Aug 28 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 SQL防注入代码集合
2008/04/25 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
求职信模版
2013/11/30 职场文书
项目负责人任命书
2014/06/04 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
党风廉正建设责任书
2015/01/29 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
创业计划书之酒厂
2019/10/14 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python