数据的ID名生成新的引用索引树
<?php
$arr=
[
'0'=>[
"id"=>2,
"name"=>"建材",
"pid"=>0,
"sort"=>50
],
'1'=>[
"id"=>3,
"name"=>"餐厅",
"pid"=>1,
"sort"=>50
],
'2'=>[
"id"=>1,
"name"=>"家居",
"pid"=>0,
"sort"=>50
],
'3'=>[
"id"=>4,
"name"=>"客厅",
"pid"=>1,
"sort"=>50
],
];
function genTree($items,$pid ="pid") {
$map = [];
$tree = [];
foreach ($items as &$it){
$map[$it['id']] = &$it;//数据的ID名生成新的引用索引树
}
foreach ($items as &$it){
$parent = &$map[$it[$pid]];
if($parent) {
$parent['son'][] = &$it;
}else{
$tree[] = &$it;
}
}
return $tree;
}
echo '<pre>';var_export(genTree($arr));'<pre>';
//array (
// 0 =>
// array (
// 'id' => 2,
// 'name' => '建材',
// 'pid' => 0,
// 'sort' => 50,
// ),
// 1 =>
// array (
// 'id' => 1,
// 'name' => '家居',
// 'pid' => 0,
// 'sort' => 50,
// 'son' =>
// array (
// 0 =>
// array (
// 'id' => 3,
// 'name' => '餐厅',
// 'pid' => 1,
// 'sort' => 50,
// ),
// 1 =>
// array (
// 'id' => 4,
// 'name' => '客厅',
// 'pid' => 1,
// 'sort' => 50,
// ),
// ),
// ),
//)
数据的ID名生成新的引用索引树的更多相关文章
- 分布式系统中我们会对一些数据量大的业务进行分拆,分布式系统中唯一主键ID的生成问题
分布式全局唯一ID生成策略 https://www.cnblogs.com/vandusty/p/11462585.html 一.背景 分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订 ...
- SQL Server复制表结构和表数据生成新表的语句
参考:http://topic.csdn.net/t/20020621/09/820025.html SELECT * INTO newTableName FROM oldTabl ...
- insert 一条数据 然后拿出这条数据在数据库中生成的ID
[insert 一条数据 然后拿出这条数据在数据库中生成的ID] <insert id="insert" parameterType="management&quo ...
- SQL Server返回插入数据的ID和受影响的行数
首先看看数据库里面的数据(S_Id为自增长标识列): sql server 中返回上一次插入数据的ID(标识值)有三种方式: 第一种 @@IDENTITY: insert into Student(S ...
- 简单数据访问类,生成简单SQL,自动转换成java对象
import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; impo ...
- 分布式Unique ID的生成方法
分布式Unique ID的生成方法 分布式的Unique ID的用途如此广泛,从业务对象Id到日志的TraceId,本文总结了林林总总的各种生成算法. 1. 发号器 我接触的最早的Unique ID, ...
- JPA注解实体类,给表添加创建时间,更新时间,id的生成以及创建唯一约束
首先创建一个BaseModel,自动生成创建时间和更新时间 @SuppressWarnings("serial") @MappedSuperclass public class B ...
- 分布式系统唯一ID的生成方案讨论
在分布式系统下唯一id问题,就是id咋生成?比如分表分库,因为要是一个表分成多个表之后,每个表的id都是从1开始累加自增长,那是不对的.举个例子,一个表拆分为了2张表,每个表的id都从1开始累加,这个 ...
- [转帖]分布式Unique ID的生成方法一览
分布式Unique ID的生成方法一览 http://www.importnew.com/22211.html 分布式的Unique ID的用途如此广泛,从业务对象Id到日志的TraceId,本文总结 ...
随机推荐
- 初识Celery
本系列文章的开发环境: window + python2. + pycharm5 + celery3.1.25 + django1.9.4 在我们日常的开发工作中,经常会遇到这几种情况: 1.在web ...
- 简易版DES加密和解密详解
在DES密码里,是如何进行加密和解密的呢?这里采用DES的简易版来进行说明. 二进制数据的变换 由于不仅仅是DES密码,在其它的现代密码中也应用了二进制数据,所以无论是文章还是数字,都需要将明文变换为 ...
- CSS3特效----制作立体导航栏菜单
使用CSS3实现下图的导航菜单效果 <!doctype html> <html lang="en"> <head> <meta chars ...
- Python初识文本基本操作
初识文本的基本操作 怎么在文件里面写内容和都内容 文件操作过程 1,找到文件 文件路径 2,打开文件 file_obj=file(文件路径,模式) 3,文件操作,读写文件 file_obj.read( ...
- 访问servlet的路径问题
一.url-pattern的三种配置 在web.xml配置文件中配置有关Servlet的时候,<url-pattern>标签是用于配置当前Servlet拦截的路径,也就是说,客户端浏览器访 ...
- Java_中快速获取系统时间
直接调用System的currentTimeMillis()即可! long start = System.currentTimeMillis(); System.out.println(" ...
- 点击文字选中checkbox
<html> <head> <title>test</title> <meta http-equiv="content-Type&quo ...
- jdk动态代理原理
http://www.cnblogs.com/MOBIN/p/5597215.html 请先查看这边博文 此文主要是在上篇博文的基础之上,宏观的理一下思路,因为之前本人看了上篇之后云里雾里(是本人 ...
- CentOS 7.2下安装Mono 5.0
微软Build2017大会期间.NET领域的.NET core之外,就是Visual Studio For Mac,大家都知道Visual Studio For Mac 是基于Mono运行的,Mono ...
- Java源码学习 -- java.lang.StringBuilder,java.lang.StringBuffer,java.lang.AbstractStringBuilder
一直以来,都是看到网上说“ StringBuilder是线程不安全的,但运行效率高:StringBuffer 是线程安全的,但运行效率低”,然后默默记住:一个是线程安全.一个线程不安全,但对内在原因并 ...