生成树型结构(比如省市区)

<?php
header("Content-type: text/html; charset=utf-8");

function generateTree($items)
{
    $tree = array();
    foreach($items as $item){
        if(isset($items[$item[‘pid‘]])){
            $items[$item[‘pid‘]][‘son‘][] = &$items[$item[‘id‘]];
        }else{
            $tree[] = &$items[$item[‘id‘]];
        }
    }
    return $tree;
}//需要注意的一点,数组的key值必须与id值保持一致
$items = array(
    1 => array(‘id‘ => 1, ‘pid‘ => 0, ‘name‘ => ‘安徽省‘),
    2 => array(‘id‘ => 2, ‘pid‘ => 0, ‘name‘ => ‘浙江省‘),
    3 => array(‘id‘ => 3, ‘pid‘ => 1, ‘name‘ => ‘合肥市‘),
    4 => array(‘id‘ => 4, ‘pid‘ => 3, ‘name‘ => ‘长丰县‘),
    5 => array(‘id‘ => 5, ‘pid‘ => 1, ‘name‘ => ‘安庆市‘),
);
echo "<pre>";
print_r(generateTree($items));

结果:

时间: 2024-08-04 05:06:51

生成树型结构(比如省市区)的相关文章

通用的树型类,可以生成任何树型结构

<?php namespace Vendor\Tree; /** * 通用的树型类,可以生成任何树型结构 */ class Tree { /** * 生成树型结构所需要的2维数组 * @var array */ public $arr = array(); /** * 生成树型结构所需修饰符号,可以换成图片 * @var array */ public $icon = array('│', '├', '└'); public $nbsp = " "; private $str =

树型结构

树型结构的基本概念 对大量的输入数据,链表的线性访问时间太慢,不宜使用.本文探讨另外一种重要的数据结构----树,其大部分时间可以保证操作的运行平均时间复杂度为O(logN),第一部分先来看一下树的一些预备知识. 首先看一下树形结构的样子,下图代表的是树型结构的一般形态: 由上图看得出树是一些节点的集合,总结一下树的一些基本概念: 1.结点:树中的数据元素都称之为结点 2.根:最上面的结点称之为根,一颗树只有一个根且由根发展而来,从另外一个角度来说,每个结点都可以认为是其子树的根 3.父亲:结点

Fact表的星型结构

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4295660.html 传统星型模型是将主数据与维度表放在一起,同一主数据在不同的交易数据维度表中存储多次,达不到复用,不灵活,主数据发生变化后,修改非常不便: BW里的星型模型采用的是扩展星型模型:维度表里存储的不是主数据本身,而是主数据的

星型结构 和 雪花型结构

在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型.在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织. 当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型, 如图 2 . 星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家

dzzoffice的树型结构用户管理设计

在DzzOffice1.1的开发中,针对用户使用群体重新设计了,机构.部门.用户管理应用. 传统OA,企业相关程序,一般是设置机构-设置部门-设置职位-添加用户这样的步骤.每个步骤分为不同的管理界面.用户管理采用列表的形式,每页显示10条.20条或更多.用户的管理,移动等操作会在不同的界面中切换.感觉操作过程会很繁琐,显示也不直观. DzzOffice主要针对几人至几百人的中小型团队和企业使用设计,要实现的功能目标主要是: 便捷增 删 移 机构.部门.子部门 便捷增 删 移 用户 批量导入用户

Mysql树型结构2种方式及相互转换

Mysql实现树型结构,数据库上常见有2种方式:领接表.预排序遍历树(MPTT). 领接表方式-- 主要依赖于一个 parent 字段,用于指向上级节点,将相邻的上下级节点连接起来,id 为自动递增自动,parent_id 为上级节点的 id. 领接表方式的优点在于容易理解,代码也比较简单明了.缺点则是递归中的 SQL 查询会导致负载变大,特别是需要处理比较大型的树状结构的时候,查询语句会随着层级的增加而增加,WEB 应用的瓶颈基本都在数据库方面,所以这是一个比较致命的缺点,直接导致树结构的扩展

数据结构中常用树型结构简介

B树.B-树.B+树.B*树.红黑树rbtree 二叉排序树.trie树Double Array 字典查找树 B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中:否则,如果查询关键字比结点关键字小,就进入左儿子:如果比结点关键字大,就进入右儿子:如果左儿子或右儿子的指针为空,则报

功能清单转成树型结构

如图所示,左侧为合同中的功能清单转成最右列的结果(树型结构): 1.首选在二级分类.三级分类上插入空行,构造出层次:新增D列,将要插空行的那一行(红色字体)设为空,其它行写入值(这里随便写了个1).选中D列的值,然后到“查找&选择”里,找到 定位 选择 空值(Blanks)此时,两空值列将标为选中状态.右击,插入此时,红字上方将会插入一行空的行.将第二2格式刷刷一下,A列整体向上移一行.如下图所示--------------------------------------------------

ElementUI的表格树(树型结构表格),很简单方式,el-table只需要小小改动几个地方

效果: 在el-table中,支持树类型的数据的显示.当 row 中包含 children 字段时,被视为树形数据.渲染树形数据时,必须要指定 row-key.支持子节点数据异步加载. 设置 Table 的 lazy 属性为 true 与加载函数 load .通过指定 row 中的 hasChildren 字段来指定哪些行是包含子节点.children 与 hasChildren 都可以通过 tree-props 配置. default-expand-all属性表示默认展开,不需要展开可以删除.