内容简介:替代函数递归方式的无限层级分类生成树方法(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层级介绍
- 骨骼数目和骨骼层级数目的美术规范
- 三层级物联网技术支撑 高效停车近在咫尺
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Art of Computer Programming, Volumes 1-3 Boxed Set
Donald E. Knuth / Addison-Wesley Professional / 1998-10-15 / USD 199.99
This multivolume work is widely recognized as the definitive description of classical computer science. The first three volumes have for decades been an invaluable resource in programming theory and p......一起来看看 《The Art of Computer Programming, Volumes 1-3 Boxed Set》 这本书的介绍吧!