<?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";
}
?>
分享到:
相关推荐
通常,HTML 文件会包含一个 `<div>` 元素作为 Tree 的容器,并使用 `class="easyui-tree"` 进行标记。此外,它还可能通过 AJAX 或 JSON 数据格式加载树节点。 2. **tree2_getdata.php**:这是一个 PHP 文件,其作用...
总之,这个`Tree`类提供了一种简洁的方式来处理和展示具有层级关系的PHP数据,无论是表格还是下拉列表,都可以轻松实现。实际项目中,可以根据需求调整`get_tree()`方法的HTML模板,以满足不同的展示效果。
<div class="easyui-layout" style="width:100%;height:100%"> ,split:true,width:200" title="Tree"> <!-- Tree组件放入这里 --> 中间区域"> <!-- 中间区域的内容 --> ,split:true,minWidth:200" title=...
本文实例讲述了php树型类。分享给大家供大家参考。...class tree { var $data = array(); var $child = array(-1=>array()); var $layer = array(-1=>-1); var $parent = array(); var $num = arr
class Tree { // ... } ``` `Tree`类中定义了一些成员变量,例如`$_info`用于存储节点信息,`$_child`用于存储子节点,`$_parent`表示父节点,`$_data`则作为临时操作数据使用。此外,还有一些私有静态变量,如`$_...
addtree('--附件图片','attachment.php?action=list&returnval=0'); addtree('-数据管理'); addtree('--数据库备份','faisunsql.php'); createtree(); //详细参数请查看 menutree/menutree.js </body></html>
class Category extends Eloquent { use \Rap2hpoutre\LaravelTree\Traits\TreeTrait; } ``` 在数据库表中,需要有`lft`和`rgt`字段,以及可能的`parent_id`字段,用于维护树的关系。然后,可以通过Eloquent的关联...
在PHP编程中,"php tree"通常指的是构建和操作数据结构的一种方式,特别是树形结构。树形结构是一种非线性的数据结构,它由节点(或称为顶点)和连接这些节点的边组成,通常用来表示层次关系或者部分与整体的关系。...
class Category extends Model { use Node; // 其他模型属性和方法 } ``` Eloquent Tree 提供了几个关键的方法来处理树形结构,如`makeChildOf()`, `makeRoot()`, `children()`, `parent()`, `ancestors()`, `...
在PHP编程中,无限级树型分类是一种常见的数据结构处理方式,尤其在网站内容管理系统、电商产品分类或者用户权限管理等场景中应用广泛。无限级树型分类允许我们构建一个可扩展的层级结构,其中每个节点都可以有任意...
例如,你可能会看到一个`<div>`元素带有`class="easyui-tree"`。 - Tree可以通过JSON数据直接初始化,也可以通过异步方式从服务器获取数据。 - 通过`data-url`属性指定数据源URL,实现异步加载。 2. **tree2_demo...
<ul id="myTree" class="checktree"> <!-- 根据数据结构动态生成节点 --> $(document).ready(function() { $.getJSON('tree_data.json', function(data) { $('#myTree').checktree({ data: data, checkbox: ...
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`是一个PHP库,它允许开发者根据BNF规则解析输入字符串并生成相应的抽象语法树(AST),这在编译器设计、解析器构建以及语言处理工具中非常常见。 抽象语法树是程序结构的图形表示,每个节点代表代码...
<div id="tree" class="easyui-tree" data-url="tree_data.php"></div> ``` 2. **Ajax请求处理** 在服务器端,我们需要创建一个能返回JSON格式的树节点数据的脚本。JSON数据应包含节点的id、text、parentId以及...
在提供的代码中,我们首先定义了一个名为`Binary_Tree_Node`的基础类,这个类代表二叉树的每个节点。每个节点通常包含以下属性: 1. `data`:存储节点的值。 2. `left`:引用当前节点的左子节点。 3. `right`:引用...
复制代码 代码如下:/* author: nick date: 2009.05.17 ...$no_top 是否需要顶层选项 $level 层深度 $parent_id 同层中的id */ class SelectTree{ public $result; public $select_name; public $option_text; public $
class BinaryTree { private $root; function __construct() { $this->root = null; } // 插入节点 function insert($value) { $this->root = $this->_insert($this->root, $value); } private function...
class TreeNode { public $id; public $name; public $parent_id; public $children; function __construct($id, $name, $parent_id) { $this->id = $id; $this->name = $name; $this->parent_id = $parent...