`
angelhau
  • 浏览: 29728 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

php 无限分类 树形数据 格式化

阅读更多

 

<?php 
function genTree($items,$id='id',$pid='pid',$son = 'children'){
	$tree = array(); //格式化的树
	$tmpMap = array();  //临时扁平数据
	
	foreach ($items as $item) {
		$tmpMap[$item[$id]] = $item;
	}
	
	foreach ($items as $item) {
		if (isset($tmpMap[$item[$pid]])) {
			$tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];
		} else {
			$tree[] = &$tmpMap[$item[$id]];
		}
	}
	unset($tmpMap);
	return $tree;
}

$items1 = array(
        array('id' => 1, 'pid' => 0, 'name' => '一级11' ),
        array('id' => 11, 'pid' => 0, 'name' => '一级12' ),
        array('id' => 2, 'pid' => 1, 'name' => '二级21' ),
        array('id' => 10, 'pid' => 11, 'name' => '二级22' ),
        array('id' => 3, 'pid' => 1, 'name' => '二级23' ),
        array('id' => 12, 'pid' => 11, 'name' => '二级24' ),
        array('id' => 9, 'pid' => 1, 'name' => '二级25' ),
        array('id' => 14, 'pid' => 1, 'name' => '二级26' ),
        array('id' => 4, 'pid' => 9, 'name' => '三级31' ),
        array('id' => 6, 'pid' => 9, 'name' => '三级32' ),
        array('id' => 7, 'pid' => 4, 'name' => '四级41' ),
        array('id' => 8, 'pid' => 4, 'name' => '四级42' ),
        array('id' => 5, 'pid' => 4, 'name' => '四级43' ),
        array('id' => 13, 'pid' => 4, 'name' => '四级44' ),
        array('id' => 15, 'pid' => 8, 'name' => '五级51' ),
        array('id' => 16, 'pid' => 8, 'name' => '五级52' ),
        array('id' => 17, 'pid' => 8, 'name' => '五级53' ),
        array('id' => 18, 'pid' => 16, 'name' => '六级64' ),
); 

$time1 = microtime(true);
var_dump(genTree($items1));
$time2 = microtime(true);
echo "function 时间1:".($time2-$time1);
?>
分享到:
评论

相关推荐

    php 无限分类 树形数据格式化代码

    为了优化这个问题,这里介绍一种非递归的方法来生成无限分类的树形数据结构。 首先,我们看一个原始的`genTree`函数,它接收一个数组`$items`,这个数组包含了分类数据,其中包含`id`(主键)、`pid`(父级ID)以及...

    php不用递归实现无限分类数据的树形格式化

    我们知道很多开源软件的无限分类都是采用递归的算法,但是我们知道递归即浪费时间,又浪费空间(内存), 故所以弃用递归。 代码相当简洁,仅5行。 版权声明:开源代码,版权归主机爸爸(IDCbaba.com)所有,可自由...

    php简单实现无限分类树形列表的方法

    在实现无限分类树形列表时,我们通常需要考虑如何构建层级结构、如何递归遍历、以及如何渲染成可视化界面等关键问题。本文所提供的方法将使用PHP数组来模拟树形结构,并通过代码示例来展示具体的实现步骤。 首先,...

    php+jquery无限级分类

    递归查询可以帮助我们构建分类的树形结构。 4. **JSON格式化数据**:为了方便jQuery处理,PHP需要将查询结果转化为JSON格式。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 5. *...

    基于layui实现树形穿梭框

    "基于layui实现树形穿梭框"是layui框架中的一个组件,用于构建交互式的树状结构选择器,常用于权限管理、数据分类选择等场景。下面将详细介绍这个知识点。 1. layui框架基础: layui是一个轻量级的前端框架,包含...

    php树形菜单类.rar

    总的来说,“php树形菜单类.rar”提供的类库是PHP开发中处理无限分类的重要工具,它简化了对复杂数据结构的操作,提高了代码的可读性和可维护性。开发者可以通过学习和使用这个类库,更好地理解和实践PHP在处理树形...

    [其他类别]无限级树形菜单(Sql数据库)_mytree.zip

    首先,无限级树形菜单的核心是树状数据结构,其中每个节点都可以有零个或多个子节点,形成一个层级关系。在数据库中,通常通过自关联来表示这种关系,即表中的一个字段引用该表的主键,形成递归关系。 1. **自关联...

    ajax+php+无限级分类下拉菜单.rar

    在这个场景下,PHP 被用来处理数据库查询,构建无限级分类的树形结构,并将结果转换为JSON格式,方便Ajax调用。 3. **无限级分类**:在数据库设计中,无限级分类通常通过自引用的方式实现,即一个分类可以有多个子...

    Ajax无级分类树形结构

    在IT行业中,Ajax无级分类树形结构是一种常见的前端数据展示方式,特别是在文件管理系统、组织架构展示或导航菜单设计中。这种技术利用Ajax(异步JavaScript和XML)技术,实现页面无需刷新即可动态加载和更新树形...

    php分页类,加密类,数据库操作类,文件操作类,无限分级类

    5. **无限分级类**:在处理具有层级关系的数据(如分类、菜单)时,无限分级类能将数据结构化为树形结构,便于遍历和展示。这类类可能使用递归或自连接查询来实现,同时提供添加、删除、修改节点的方法。 6. **验证...

    easyUI-树形表格(TreeGrid)实现无限层级菜单

    总结,实现EasyUI的树形表格(TreeGrid)功能,尤其是无限层级菜单,涉及到前端的数据结构设计、TreeGrid的配置、服务器端的数据获取与分页处理、JavaScript的事件监听和交互,以及数据库的初始化。通过合理的步骤和...

    利用php递归实现无限分类 格式化数组的详解

    这个结构允许我们以树形的方式展示分类,每个分类下可以有任意数量的子分类,子分类也可以有子分类,以此形成无限深度的分类结构。 实现这个功能的关键在于编写一个递归函数,这里名为`get_array`。函数接收一个...

    php+mysql实现无限级分类

    $j++){ // 用于格式化显示子类 $t .= "├┄┄"; } echo "$classArr[$i]['id'].""&gt;'.$t.$classArr[$i]['classname']."&lt;/option&gt;"; } echo "&lt;/select&gt;"; ``` 这段代码会生成一个下拉框,其中包含了主分类以及所有...

    thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法

    在介绍thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法时,需要掌握的核心知识点主要集中在以下几个方面: 首先,理解thinkPHP框架中递归的概念。递归是一种常见的编程技术,是指函数直接或间接调用自身的...

    treetable + ajax 后台取数据的完整实现

    Treetable是一种将表格数据以树形结构展示的技术,它使得用户可以更直观地理解和操作层次化的数据。而Ajax(Asynchronous JavaScript and XML)则是前端与后台交互的关键技术,它允许在不刷新整个页面的情况下更新...

    php无限分类且支持输出树状图的详细介绍

    首先,我们定义了一个名为Tree的类,该类可以处理无限分类的数据并构建出树状结构。在Tree类中,我们首先定义了用于存储树形结构的二维数组($arr)和用于构建树状图的修饰符号数组($icon)。这些修饰符号可以是...

    扩展layui的权限树authtree

    因此,我们需要利用layui的form模块来创建一个隐藏的表单,将用户在树形结构中选择的权限节点转化为可以提交的数据格式。 3. **自定义节点行为**:layui的tree组件允许我们通过JavaScript进行扩展,添加自定义的...

    jquery实现树的动态加载

    在网页中,树形结构常用于展示分类信息,如文件系统、组织架构或导航菜单。 三、动态加载 动态加载是指根据用户的操作或需求,在页面加载后异步获取并显示数据。这种方式可以减少页面初次加载时的数据量,提高用户...

Global site tag (gtag.js) - Google Analytics