`
unsoundboy
  • 浏览: 63475 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

php class tree

    博客分类:
  • php
PHP 
阅读更多
<?php        
        class Tree{        
                var $data = array();
               
                var $child = array(-1=>array());
               
                var $layer = array(-1=>-1);
               
                var $parent = array();
                
                function Tree ($value){
                        $this->setNode(0, -1, $value);
                }

                function setNode ($id, $parent, $value){
                        $parent = $parent?$parent:0;
                        $this->data[$id] = $value;
                        $this->child[$id] = array();
                        $this->child[$parent][] = $id;
                        $this->parent[$id] = $parent;
                        if (!isset($this->layer[$parent])){
                                $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){
                        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;
                }
        } // end class
?>
<?php
/*--------------------------------------------------------------------------------
使用方法
PHP代码:--------------------------------------------------------------------------------
*/
        //new Tree(根目录的名字);
        //根目录的ID自动分配为0
        $Tree = new Tree('根目录');
        //setNode(目录ID,上级ID,目录名字);
        $Tree->setNode(1, 0, '目录1');
        $Tree->setNode(2, 0, '目录2');
        $Tree->setNode(3, 0, '目录3');
        $Tree->setNode(4, 3, '目录3.1');
        $Tree->setNode(5, 3, '目录3.2');
        $Tree->setNode(6, 3, '目录3.3');
        $Tree->setNode(7, 2, '目录2.1');
        $Tree->setNode(8, 2, '目录2.2');
        $Tree->setNode(9, 2, '目录2.3');
        $Tree->setNode(10, 6, '目录3.3.1');
        $Tree->setNode(11, 6, '目录3.3.2');
        $Tree->setNode(12, 6, '目录3.3.3');
        //getChilds(指定目录ID);
        //取得指定目录下级目录.如果没有指定目录就由根目录开始
        $category = $Tree->getChilds(3);
        //遍历输出
        foreach ($category as $key=>$id)
        {
        echo $Tree->getLayer($id, '|-').$Tree->getValue($id)."<br>\n";
        }
?>
分享到:
评论

相关推荐

    Easyui tree 测试demo

    通常,HTML 文件会包含一个 `&lt;div&gt;` 元素作为 Tree 的容器,并使用 `class="easyui-tree"` 进行标记。此外,它还可能通过 AJAX 或 JSON 数据格式加载树节点。 2. **tree2_getdata.php**:这是一个 PHP 文件,其作用...

    PHP树形结构tree类用法示例

    总之,这个`Tree`类提供了一种简洁的方式来处理和展示具有层级关系的PHP数据,无论是表格还是下拉列表,都可以轻松实现。实际项目中,可以根据需求调整`get_tree()`方法的HTML模板,以满足不同的展示效果。

    easyui tree 三帧界面

    &lt;div class="easyui-layout" style="width:100%;height:100%"&gt; ,split:true,width:200" title="Tree"&gt; &lt;!-- Tree组件放入这里 --&gt; 中间区域"&gt; &lt;!-- 中间区域的内容 --&gt; ,split:true,minWidth:200" title=...

    php树型类实例

    本文实例讲述了php树型类。分享给大家供大家参考。...class tree {  var $data = array();  var $child = array(-1=&gt;array());  var $layer = array(-1=&gt;-1);  var $parent = array();  var $num = arr

    php实现的树形结构数据存取类实例

    class Tree { // ... } ``` `Tree`类中定义了一些成员变量,例如`$_info`用于存储节点信息,`$_child`用于存储子节点,`$_parent`表示父节点,`$_data`则作为临时操作数据使用。此外,还有一些私有静态变量,如`$_...

    很好用的tree,大家来下载看看

    addtree('--附件图片','attachment.php?action=list&returnval=0'); addtree('-数据管理'); addtree('--数据库备份','faisunsql.php'); createtree(); //详细参数请查看 menutree/menutree.js &lt;/body&gt;&lt;/html&gt;

    Laravel开发-tree

    class Category extends Eloquent { use \Rap2hpoutre\LaravelTree\Traits\TreeTrait; } ``` 在数据库表中,需要有`lft`和`rgt`字段,以及可能的`parent_id`字段,用于维护树的关系。然后,可以通过Eloquent的关联...

    php tree

    在PHP编程中,"php tree"通常指的是构建和操作数据结构的一种方式,特别是树形结构。树形结构是一种非线性的数据结构,它由节点(或称为顶点)和连接这些节点的边组成,通常用来表示层次关系或者部分与整体的关系。...

    Laravel开发-eloquent-tree

    class Category extends Model { use Node; // 其他模型属性和方法 } ``` Eloquent Tree 提供了几个关键的方法来处理树形结构,如`makeChildOf()`, `makeRoot()`, `children()`, `parent()`, `ancestors()`, `...

    PHP无限级树型分类

    在PHP编程中,无限级树型分类是一种常见的数据结构处理方式,尤其在网站内容管理系统、电商产品分类或者用户权限管理等场景中应用广泛。无限级树型分类允许我们构建一个可扩展的层级结构,其中每个节点都可以有任意...

    easyui tree

    例如,你可能会看到一个`&lt;div&gt;`元素带有`class="easyui-tree"`。 - Tree可以通过JSON数据直接初始化,也可以通过异步方式从服务器获取数据。 - 通过`data-url`属性指定数据源URL,实现异步加载。 2. **tree2_demo...

    Jqurey checktree

    &lt;ul id="myTree" class="checktree"&gt; &lt;!-- 根据数据结构动态生成节点 --&gt; $(document).ready(function() { $.getJSON('tree_data.json', function(data) { $('#myTree').checktree({ data: data, checkbox: ...

    PHP ClassObject — 解析PHP实现二叉树

    php// Define a class to implement a binary treeclass Binary_Tree_Node { // Define the variable to hold our data: public $data; // And a variable to hold the left and right objects: public $left; ...

    php-bnf-tree:根据 bnf 规则创建输入字符串树

    `php-bnf-tree`是一个PHP库,它允许开发者根据BNF规则解析输入字符串并生成相应的抽象语法树(AST),这在编译器设计、解析器构建以及语言处理工具中非常常见。 抽象语法树是程序结构的图形表示,每个节点代表代码...

    JQueryEasyUI学习笔记(十五)异步tree 源码

    &lt;div id="tree" class="easyui-tree" data-url="tree_data.php"&gt;&lt;/div&gt; ``` 2. **Ajax请求处理** 在服务器端,我们需要创建一个能返回JSON格式的树节点数据的脚本。JSON数据应包含节点的id、text、parentId以及...

    PHP Class&amp;Object -- PHP 自排序二叉树的深入解析

    在提供的代码中,我们首先定义了一个名为`Binary_Tree_Node`的基础类,这个类代表二叉树的每个节点。每个节点通常包含以下属性: 1. `data`:存储节点的值。 2. `left`:引用当前节点的左子节点。 3. `right`:引用...

    php 无限级 SelectTree 类

    复制代码 代码如下:/* author: nick date: 2009.05.17 ...$no_top 是否需要顶层选项 $level 层深度 $parent_id 同层中的id */ class SelectTree{ public $result; public $select_name; public $option_text; public $

    PHP实现二叉树图

    class BinaryTree { private $root; function __construct() { $this-&gt;root = null; } // 插入节点 function insert($value) { $this-&gt;root = $this-&gt;_insert($this-&gt;root, $value); } private function...

    PHP树结构,实现无限分级

    class TreeNode { public $id; public $name; public $parent_id; public $children; function __construct($id, $name, $parent_id) { $this-&gt;id = $id; $this-&gt;name = $name; $this-&gt;parent_id = $parent...

Global site tag (gtag.js) - Google Analytics