树形算法_PHP
作者:宛如画中人需_308 | 来源:互联网 | 2017-05-14 02:18
?测试数据$ararray(array(id1,pid0),array(id2,pid0),array(id3,pid2),array(id4,pid0),array(id5,pid3),array(id6,pid1),array(id7,pid1),array(id8,pid6),array(id9,pid7),array(id10,pid9));排序函数functioncmd($a,$b)
//测试数据 $ar = array( array(id=>1,pid=>0), array(id=>2,pid=>0), array(id=>3,pid=>2), array(id=>4,pid=>0), array(id=>5,pid=>3), array(id=>6,pid=>1), array(id=>7,pid=>1), array(id=>8,pid=>6), array(id=>9,pid=>7), array(id=>10,pid=>9) ); //排序函数 function cmd($a,$b) { if($a[pid]==$b[pid]) return 0; return $a[pid]>$b[pid]?1:-1; } //排序,为避免数据中父节点在子节点后面出现,这种情况在多次修改数据后经常会发生的 //排序的目的就是防止这种情况造成的混乱 uasort($ar,cmd); //定义目标数组 $d = array(); //定义索引数组,用于记录节点在目标数组的位置 $ind = array(); foreach($ar as $v) { $v[child] = array(); //给每个节点附加一个child项 if($v[pid] == 0) { $i = count($d); $d[$i] = $v; $ind[$v[id]] =& $d[$i]; }else { $i = count($ind[$v[pid]][child]); $ind[$v[pid]][child][$i] = $v; $ind[$v[id]] =& $ind[$v[pid]][child][$i]; } } //检查结果 print_r($d); ?> 算法特点:利用B+树概念,只用一次循环就可生成树形数组
推荐阅读
图像边缘是指图像中灰度值发生显著变化的区域。Sobel算子是一种常用的边缘检测方法,通过计算图像灰度值的梯度来检测边缘。本文介绍了Sobel算子的基本原理,并提供了基于MATLAB的实现代码。 ...
[详细]
蜡笔小新 2024-11-13 10:13:04
本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ...
[详细]
蜡笔小新 2024-11-13 09:55:03
对于众多创业公司而言,选择小程序或小视频的发展方向至关重要。本文将深入分析小程序和小视频的特点、优势及局限,帮助创业者做出更明智的选择。 ...
[详细]
蜡笔小新 2024-11-12 18:48:34
CDA数据分析师团队出品,作者:徐杨老师,编辑:Mika。本文将帮助您了解如何撰写一份高质量的数据分析师简历,特别是对于转行者。 ...
[详细]
蜡笔小新 2024-11-12 18:20:52
本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ...
[详细]
蜡笔小新 2024-11-12 18:13:16
基于二次预测的H.264分数像素运动估计算法在这项研究中,提出了一种基于二次预测的H.264分数像素运动估计(ME)算法。这里ÿ ...
[详细]
蜡笔小新 2024-11-12 17:53:48
在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ...
[详细]
蜡笔小新 2024-11-12 16:40:04
本文探讨了数据标注在自动驾驶领域的具体应用,包括多种标注类型及其重要性。 ...
[详细]
蜡笔小新 2024-11-12 15:39:05
数字中心的数据应用分析团队在“厦门大数据安全开放创新应用大赛·交通专题”中荣获算法赛一等奖。 ...
[详细]
蜡笔小新 2024-11-12 15:05:13
本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ...
[详细]
蜡笔小新 2024-11-12 15:02:28
重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ...
[详细]
蜡笔小新 2024-11-12 14:57:05
字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ...
[详细]
蜡笔小新 2024-11-12 14:07:25
本文总结了在SQL Server数据库中编写和优化存储过程的经验和技巧,旨在帮助数据库开发人员提升存储过程的性能和可维护性。 ...
[详细]
蜡笔小新 2024-11-12 13:13:21
探讨如何在Go语言中高效地处理大规模切片的去重操作,特别是针对百万级数据量的场景。 ...
[详细]
蜡笔小新 2024-11-12 12:56:52
本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ...
[详细]
蜡笔小新 2024-11-12 12:37:08
宛如画中人需_308
这个家伙很懒,什么也没留下!