<?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);
?>
分享到:
相关推荐
为了优化这个问题,这里介绍一种非递归的方法来生成无限分类的树形数据结构。 首先,我们看一个原始的`genTree`函数,它接收一个数组`$items`,这个数组包含了分类数据,其中包含`id`(主键)、`pid`(父级ID)以及...
我们知道很多开源软件的无限分类都是采用递归的算法,但是我们知道递归即浪费时间,又浪费空间(内存), 故所以弃用递归。 代码相当简洁,仅5行。 版权声明:开源代码,版权归主机爸爸(IDCbaba.com)所有,可自由...
在实现无限分类树形列表时,我们通常需要考虑如何构建层级结构、如何递归遍历、以及如何渲染成可视化界面等关键问题。本文所提供的方法将使用PHP数组来模拟树形结构,并通过代码示例来展示具体的实现步骤。 首先,...
递归查询可以帮助我们构建分类的树形结构。 4. **JSON格式化数据**:为了方便jQuery处理,PHP需要将查询结果转化为JSON格式。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 5. *...
"基于layui实现树形穿梭框"是layui框架中的一个组件,用于构建交互式的树状结构选择器,常用于权限管理、数据分类选择等场景。下面将详细介绍这个知识点。 1. layui框架基础: layui是一个轻量级的前端框架,包含...
总的来说,“php树形菜单类.rar”提供的类库是PHP开发中处理无限分类的重要工具,它简化了对复杂数据结构的操作,提高了代码的可读性和可维护性。开发者可以通过学习和使用这个类库,更好地理解和实践PHP在处理树形...
首先,无限级树形菜单的核心是树状数据结构,其中每个节点都可以有零个或多个子节点,形成一个层级关系。在数据库中,通常通过自关联来表示这种关系,即表中的一个字段引用该表的主键,形成递归关系。 1. **自关联...
在这个场景下,PHP 被用来处理数据库查询,构建无限级分类的树形结构,并将结果转换为JSON格式,方便Ajax调用。 3. **无限级分类**:在数据库设计中,无限级分类通常通过自引用的方式实现,即一个分类可以有多个子...
在IT行业中,Ajax无级分类树形结构是一种常见的前端数据展示方式,特别是在文件管理系统、组织架构展示或导航菜单设计中。这种技术利用Ajax(异步JavaScript和XML)技术,实现页面无需刷新即可动态加载和更新树形...
5. **无限分级类**:在处理具有层级关系的数据(如分类、菜单)时,无限分级类能将数据结构化为树形结构,便于遍历和展示。这类类可能使用递归或自连接查询来实现,同时提供添加、删除、修改节点的方法。 6. **验证...
总结,实现EasyUI的树形表格(TreeGrid)功能,尤其是无限层级菜单,涉及到前端的数据结构设计、TreeGrid的配置、服务器端的数据获取与分页处理、JavaScript的事件监听和交互,以及数据库的初始化。通过合理的步骤和...
这个结构允许我们以树形的方式展示分类,每个分类下可以有任意数量的子分类,子分类也可以有子分类,以此形成无限深度的分类结构。 实现这个功能的关键在于编写一个递归函数,这里名为`get_array`。函数接收一个...
$j++){ // 用于格式化显示子类 $t .= "├┄┄"; } echo "$classArr[$i]['id']."">'.$t.$classArr[$i]['classname']."</option>"; } echo "</select>"; ``` 这段代码会生成一个下拉框,其中包含了主分类以及所有...
在介绍thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法时,需要掌握的核心知识点主要集中在以下几个方面: 首先,理解thinkPHP框架中递归的概念。递归是一种常见的编程技术,是指函数直接或间接调用自身的...
Treetable是一种将表格数据以树形结构展示的技术,它使得用户可以更直观地理解和操作层次化的数据。而Ajax(Asynchronous JavaScript and XML)则是前端与后台交互的关键技术,它允许在不刷新整个页面的情况下更新...
首先,我们定义了一个名为Tree的类,该类可以处理无限分类的数据并构建出树状结构。在Tree类中,我们首先定义了用于存储树形结构的二维数组($arr)和用于构建树状图的修饰符号数组($icon)。这些修饰符号可以是...
因此,我们需要利用layui的form模块来创建一个隐藏的表单,将用户在树形结构中选择的权限节点转化为可以提交的数据格式。 3. **自定义节点行为**:layui的tree组件允许我们通过JavaScript进行扩展,添加自定义的...
在网页中,树形结构常用于展示分类信息,如文件系统、组织架构或导航菜单。 三、动态加载 动态加载是指根据用户的操作或需求,在页面加载后异步获取并显示数据。这种方式可以减少页面初次加载时的数据量,提高用户...