内容简介:替代函数递归方式的无限层级分类生成树方法(php)
代码地址 : tpr_infinite_tree()
源码
function tpr_infinite_tree($data,$parent_index='parent_id',$data_index='id',$child_name='child'){ // $data = [ // ['id'=>1,'parent_id'=>0], // ['id'=>2,'parent_id'=>3], // ['id'=>3,'parent_id'=>1], // ['id'=>4,'parent_id'=>2], // ['id'=>5,'parent_id'=>6], // ['id'=>6,'parent_id'=>7], // ['id'=>7,'parent_id'=>5], // ]; $items = []; foreach ($data as $d){ $items[$d[$data_index]] = $d; if(!isset($d[$parent_index]) || !isset($d[$data_index]) || isset($d[$child_name])){ return false; } } $tree = [];$n=0; foreach($items as $item){ if(isset($items[$item[$parent_index]])){ $items[$item[$parent_index]][$child_name][] = &$items[$item[$data_index]]; }else{ $tree[$n++] = &$items[$item[$data_index]]; } } return $tree; }
阐释
参数
- $data 节点list数据
- $parent_index 父节点索引名,默认值parent_id
- $data_index 各节点索引名,默认值id
- $child_name 树状结构中子节点位存于父节点的属性值,默认值child
原理
根据节点id作为key值
单循环各节点,判断是否有父节点
若有父节点,则子节点绑定至父节点的child属性中
当出现a属于b,b属于c,c属于a这种死循环所属关系时,不会在$tree中体现
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 小程序无限层级路由方案
- 层级时间轮的 Golang 实现
- iOS TableView层级结构剖析
- Flutter之Widget层级介绍
- 骨骼数目和骨骼层级数目的美术规范
- 三层级物联网技术支撑 高效停车近在咫尺
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高性能MySQL
施瓦茨 (Baron Schwartz)、扎伊采夫 (Peter Zaitsev)、特卡琴科 (Vadim Tkachenko) / 宁海元、周振兴、彭立勋、翟卫祥,刘辉 / 电子工业出版社 / 2013-5-1 / 128.00元
《高性能mysql(第3版)》是mysql 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新mysql 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可......一起来看看 《高性能MySQL》 这本书的介绍吧!