当前位置:首页 > 日记 > 正文

PHP数组不确定层次数据的分层处理代码

PHP数组不确定层次数据的分层处理代码
复制代码代码如下所示:

*创建父树树数组
*参数
* AR数组,由邻接表组织的数据
*作为id数组中的主键或键连接。
*作为$键数组下标关联中的父键或键。
*返回多维数组
**
功能find_parent($ ar,$id = 'id',PID = 'pid美元){
foreach(AR美元美元美元美元T V V){ } } { $id = $ V;
foreach($ T $ K = $项){
如果(项目{ $ } }){
如果(!isset($ T { } } { $项美元{ 'parent PID'} { } } { $美元项目PID))
$ T { $ { } } {美元项目ID 'parent} { } } { $美元项目PID = $ T { } } { $ PID美元项目;
{ } { $ T $ K 'reference} =真;
}
}
返回$;
}

*创建子节点的树阵
*参数
* AR数组,由邻接表组织的数据
*作为id数组中的主键或键连接。
*作为$键数组下标关联中的父键或键。
*返回多维数组
**
功能find_child($ ar,$id = 'id',PID = 'pid美元){
foreach(AR美元美元美元美元T V V){ } } { $id = $ V;
foreach($ T $ K = $项){
如果(项目{ $ } }){
$ T { $ { } } {美元项目PID'孩子'} { } } { $美元项目ID = $ T { $ K };
{ } { $ T $ K 'reference} =真;
}
}
返回$;
}

实例:
复制代码代码如下所示:
数据=数组(
阵列('id' = > 1,'parent= > 0,'name' = > 'grandfather),
阵列('id' = > 2,'parent= > 1,'name' = >爸爸),
阵列('id' = > 3,'parent= > 1,'name' = >叔叔),
阵列('id' = > 4,'parent= > 2,'name' = > 'themselves),
阵列('id' = > 5,'parent= > 4,'name' = >孩子)
);
P = find_parent($数据,'id','parent);
C = find_child美元(美元数据,'id','parent);

上述两种方法都是根据id拆分为数组的所有节点,然后通过连接到父节点和子节点的引用平坦元素找到它们的父或子元素,
但是,在分割数组中仍然存在引用的元素,因此,在实际应用中,这些引用元素的最佳标记是为了避免将它们作为根遍历,从而导致复制。
复制代码代码如下所示:
foreach(P =美元美元美元关键项目){
如果($项{ 'reference ' })继续;
print_r($项);
}
foreach($ C键=美元美元项目){
如果($项{ 'reference ' })继续;
print_r($项);
}

递归方法,当删除PHP数组元素时,数组游标将返回为零。因此,遍历过程中发现的一些元素必须保留在数组中,不能减少后续元素的搜索范围。
复制代码代码如下所示:
mylist美元=数组(数组('parent_id= > 0,'id' = > 1),
阵列('parent_id= > 0,'id' = > 2),
阵列('parent_id= > 0,'id' = > 3),
阵列('parent_id= > 2,'id' = > 4),
阵列('parent_id= > 2,'id' = > 5),
阵列('parent_id= > 3,'id' = > 6),
阵列('parent_id= > 3,'id' = > 7),
阵列('parent_id= > 4,'id' = > 8),
阵列('parent_id= > 5,'id' = > 9),
阵列('parent_id= > 5,'id' = > 10)
);

功能_findchildren($列表,p_id美元){ / /分层数据,
数组();
foreach(美元美元美元列表ID = >项目){
如果($项{ 'parent_id} = = $ p_id){
长度=计数($ r);
美元长度= } = $项目;
如果($ T =美元-> _findchildren($列表,$项目{ 'id' })){
{ } { $ R $长孩子} = $ T;
}
}
}
返回$ r;
}

print_r(_findchildren(mylist美元,0));

相关文章

坦克指挥官指挥官直觉技能技能直觉

坦克指挥官指挥官直觉技能技能直觉

指挥官,恢复,直觉,技能,坦克,问题: 最近,玩坦克世界的电脑,发现司机的直觉技巧从不失败,太亮的灯泡;我发现了敌人。原因是什么 答案uff1a 指挥官在坦克的直觉,游戏世界不工作,这是由于最近0.8.3版本的更新,在UI界面的衣服增加了一个消息,通知所有…

改进的TimesTen数据库软件Oracle收

改进的TimesTen数据库软件Oracle收

收购,数据库,绩效,电脑软件,TimesTen,Oracle当然你看到的是:提高软件性能的TimesTen数据库Oracle收购。Oracle在6月9日宣布,它同意收购的公司。TimesTen是一家私营软件公司的产品,可以提高数据库应用程序需要快速响应时间的性能,如股票市场和机…

与$相对的$相对路径的PHP代码。

与$相对的$相对路径的PHP代码。

相对路径,代码,电脑软件,PHP,面试问题中的PHP问题: 美元= ' / / / / B C D / e.php;B =美元/ / / / 34 B 12 / / / c.php;B美元计算相对于美元的路径应该..或.. / C / D PHP面试问题的答案: 复制代码代码如下所示: 功能getrelative($,$){ $ ARR =…

如何设置Win7窗口自动改变窗口的颜

如何设置Win7窗口自动改变窗口的颜

条件,窗口,如何设置,颜色,天气,注释:我们知道在Windows 7系统中,当窗口没有改变时,窗口的颜色是固定的。 我们知道,在Windows 7系统中,当窗口不是取代,窗口的颜色是固定的。下面,萧边教你修改Windows 7窗口的颜色,让窗口与天气的变化自动改变,这样…

如何在WIN7系统开始搜索框消失

如何在WIN7系统开始搜索框消失

搜索,系统,如何在,电脑软件,点评:Win7的搜索框,无论是寻找软件,使用命令打开什么,通过这一功能,没有它,真的很不习惯,如果没有怎么找得回来这里有一个很好的方法来指一个感兴趣的朋友。 win7,我认为最好的办法是使用Win7的搜索框。无论是寻找软件和…

苹果为AppStore测试搜索提供了新功

苹果为AppStore测试搜索提供了新功

新功能,搜索,测试,电脑软件,AppStore,北京时间3月26日,根据macstories网站,苹果应用商店测试搜索推荐的功能,为用户提供应用建议。 时间规划的共同创始人Olga Osadcha首先发现了这个功能,他发表了对Twitter的新功能的截图,截图显示,当用户输入在…

微软升级iPad办公室:支持无线打印

微软升级iPad办公室:支持无线打印

支持,升级,办公室,电脑软件,iPad,北京时间4月30日消息,微软刚刚升级了iPad版的Office套件,对苹果公司的AirPrint功能实现无线打印的应用。 上个月,微软刚刚推出的iPad的Office办公套件包括Word、Excel和PowerPoint,和AirPrint是苹果的OS X Lio…

iOS7.1代码显示西丽将在未来登陆苹

iOS7.1代码显示西丽将在未来登陆苹

显示,西丽,将在,代码,未来,北京4月24日消息,iOS 7.1 SDK的源代码显示,Siri语音助理将土地在未来苹果电视。Pierre Blazquez(Pierre Blazquez)首先发现了这个。科技博客9to5Mac然后看着iOS 7.1和iOS 7.1.1文件,证实存在的代码。 该文件显示的资…

理解pkg-config工具(Linux编译的帮

理解pkg-config工具(Linux编译的帮

编译,工具,电脑软件,pkg,config,点评:PKG的配置,这是我们今天要介绍的,提供了解决上述问题的一种美丽的解决方案。从那时起,你不必担心任何更多 你在Unix或Linux下开发软件了吗完成一个程序,编译运行正常,在你的机器上运行良好,你把它放在源代码管…

网卡eth0在FedoraLinux启动慢启动

网卡eth0在FedoraLinux启动慢启动

启动,慢启动,网卡,电脑软件,FedoraLinux,点评:uff1a 激活eth0慢当Fedora的启动方案 当Fedora的开始,它太长了启动eth0。我怎么能跳过它呢 # / / / sbin目录设置:取消网络激活系统的功能。 在图形界面中,系统——管理——网络——在计算机启…

操作打开Windows7任务栏通知区域中

操作打开Windows7任务栏通知区域中

通知,任务栏,区域,操作,回收站,点评:很多类似的爱酷的桌面软件来存储所有常用图标的人,或只有Windows7任务栏,接下来将介绍给你minibin使用通知区域中的一个小图标,方便回收再利用和再循环等开放手术 许多人不喜欢在桌面上放置任何图标。他们使…

介绍MySQL事件查看器的使用

介绍MySQL事件查看器的使用

事件,查看器,电脑软件,MySQL,查看事件调度程序是否已经打开。 显示变量like'event_scheduler; 打开事件查看器 设置全局event_scheduler = 1; 创建一个事件 Grammar: 创建事件{不存在} event_name 在进度计划 {完成时{ { } } } { } |启用禁…