`
student_lp
  • 浏览: 437100 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php工具类之【tree类】

阅读更多
class Tree {
	var $data = array();
	var $child = array(-1 => array());
	var $layer = array(-1 => -1);
	var $parent = array();
	var $countid = 0;
	function Tree($value='') {}
	function setNode($id, $parent, $value) {

		$parent = $parent?$parent:0;

		$this->data[$id] = $value;
		$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) {

		if(is_array($this->child[$root] ))
		{
			foreach($this->child[$root] as $key => $id) {
				$tree[] = $id;
				if($this->child[$id]) $this->getList($tree, $id);
			}
		}else{
		}
	}

	function getValue($id) {
		return $this->data[$id];
	}

	function reSetLayer($id) {
		if($this->parent[$id]) {
			$this->layer[$this->countid] = $this->layer[$this->countid] + 1;
			$this->reSetLayer($this->parent[$id]);
		}
	}

	function getLayer($id, $space = false) {
		$this->layer[$id] = 0;
		$this->countid = $id;
		$this->reSetLayer($id);
		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();
		$this->getList($child, $id);

		return $child;
	}
}

 

分享到:
评论

相关推荐

    php无限级分类-un-limit-tree.zip

    总的来说,`un-limit-tree` 类库为PHP开发者提供了一个强大的工具,用于处理无限级分类问题,简化了数据结构的管理,提高了代码的可维护性。如果你经常需要处理类似的问题,这个类库将是一个非常有价值的资源。

    PHP ajax Tree树形菜单 v1.0

    总的来说,**PHP AJAX Tree树形菜单 v1.0** 是一个结合了PHP后端处理和AJAX前端交互的实用工具,它能够帮助开发者快速构建功能丰富的树形菜单,适用于各种Web应用中。通过理解和运用其中的技术,可以提升Web应用的...

    基于PHP的Tree 生成无限多级分类,生成树形结构.zip

    总的来说,这个资源提供了一种使用PHP生成无限层级分类树形结构的方法,对于需要处理这类问题的开发者来说,是一个有价值的参考资料。通过学习和实践,你不仅可以掌握如何在PHP中构建树形结构,还能增强对数据结构和...

    tabletree4J 树形菜单,无限级,有demo

    总的来说,tabletree4J是一个强大且灵活的工具,能够帮助开发者快速构建出功能完备、层次清晰的树形菜单,尤其适合处理具有无限级分类的场景。结合其提供的示例和API文档,开发者可以高效地将其集成到自己的项目中,...

    tree-sitter-php:看树人的 PHP 语法

    总的来说,tree-sitter-php是一个强大的工具,它将PHP的复杂语法转化为易于处理的结构,极大地提升了开发者的工作效率。无论你是进行代码维护、编写编辑器插件,还是进行代码质量分析,tree-sitter-php都能为你提供...

    基于jquery的树形结构JsTree 使用心得

    ### 六、与其他工具的整合 结合jQuery和其他库,如Bootstrap、Angular等,可以构建更复杂的应用场景。例如,可以将JsTree嵌入到一个表单中,或者与后端框架如Spring MVC进行数据交互。 ### 七、注意事项 1. 保持...

    Laravel开发-tree

    安装完成后,你需要创建一个模型并继承自 `\Rap2hpoutre\LaravelTree\Eloquent` 或 `\Rap2hpoutre\LaravelTree\Node` 类。这个基类提供了处理嵌套集所需的所有方法,如`makeChildOf()`, `children()`, `ancestors()`...

    laravel-admin:form表单树状复选框组件(CheckboxTree).rar

    在 `app/admin/extensions` 目录下创建一个新的目录,比如 `checkbox-tree`,并在其中创建 `.php` 文件,例如 `CheckboxTree.php`,在这个文件中编写扩展类,继承自 Laravel-Admin 的 `Form\Extensions\...

    Laravel开发-eloquent-tree

    总的来说,Eloquent Tree 是一个强大的工具,能够帮助 Laravel 开发者轻松地管理和操作树状数据。结合其丰富的API,你可以创建复杂且灵活的树形结构,满足各种业务需求。在实践中,务必熟悉这些方法并根据项目需求...

    HA_Sothink Tree Menu.rar

    Sothink Tree Menu是一款高效、易用的工具,它能帮助开发者快速构建出层次分明、功能强大的树形导航菜单,极大地提升了用户体验。下面我们将深入探讨Sothink Tree Menu的特点、功能以及如何在实际项目中应用。 首先...

    jsTree大集合之所有

    例如,它可以用于展示网站的多级分类,或者在项目管理工具中表示任务的层级关系。 总结:jsTree作为一个强大的JavaScript库,以其丰富的功能、灵活的配置和易于扩展的插件系统,使得在网页中创建和管理树状结构变得...

    infinite-tree:php的无限级分类树,以树的结构来存储分类等数据,方便的树结构管理,分支查询,删除,移动等操作。无PHP框架限制。Php's infinite-level classification tree uses tree structure to store classification and other data, convenient tree structure management, branch query, delete, and move operations. No

    php的无限树工具包 之前我已经写过一个无限级分类PHP包名称叫tp5-nestedsets在packagist上的安装量还是挺大的。但是tp5-nestedsets是基于tp5的很显然其灵活性不够高。而infinite-tree是一个不受框架限制的无限级分类...

    svm.rar_decision tree_tree

    标题中的"svm.rar_decision tree_tree"暗示了我们讨论的主题集中在支持向量机(SVM)和决策树这两种机器学习算法上。"svm.php"表明这是一个使用PHP编程语言实现的SVM算法代码文件。 决策树是一种广泛应用的监督学习...

    php递归实现无限级分类库.zip

    在PHP编程中,无限级分类库是一个非常实用的工具,特别是在处理如文章分类、商品类别、用户组等具有层级关系的数据时。这个压缩包“php递归实现无限级分类库.zip”提供了一个PHP实现的解决方案,它允许你方便地管理...

    无限分类,PHP分类

    接下来是PHP代码部分,实现无限分类通常会用到两种主要的方法:递归和层级遍历(如预排序遍历树,简称PreOrder Tree Traversal)。 1. **递归方法**: 使用递归函数,每次调用自身来处理当前分类的所有子分类。...

    DHTMLX Tree强大的树插件

    总的来说,DHTMLX Tree是一个功能强大、灵活的JavaScript树插件,它提供了一整套工具和方法来满足各种复杂的树形视图需求。通过深入理解和熟练运用它的API,开发者能够创建出交互性高、用户体验优良的树形界面,提升...

    php+mysql无限分类源码

    在这个源码中,`Tree.php`可能是实现无限分类逻辑的PHP脚本,可能包含了递归函数或者路径枚举算法来构建和操作分类树。它可能包括了添加、删除、查找和显示分类的功能。 `tvmenu.sql`是一个SQL文件,通常用于导入...

    Category类库:php无限分类类库

    Category类库是PHP编程中用于实现无限分类的一个实用工具,它极大地简化了处理层次结构数据的复杂性。在网站或应用程序中,无限分类通常用于管理如产品目录、文章分类、用户组等,其中子类别可以无限层级地嵌套。...

    Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例

    `list_to_tree`是Thinkphp框架中的一个实用工具,它可以帮助我们有效地处理具有层级关系的数据,例如在创建分类、菜单等场景时。下面我们将详细解释这个过程,并给出具体的代码示例。 首先,`list_to_tree`函数的...

    laravel-admin利用ModelTree实现对分类信息的管理

    通过`php artisan admin:make CategoriesController --model=App\Models\Shoping\Category`命令,我们可以快速创建一个名为`CategoriesController`的控制器类,这个类继承自Laravel-admin的`AdminController`。...

Global site tag (gtag.js) - Google Analytics