PHP迭代与递归实现无限级分类
发布时间:2021-03-12 22:46:35 所属栏目:编程 来源:网络整理
导读:无穷级分类是开拓中常见的环境,因此本文对常见的无穷极分类算法举办总结归纳. 1.轮回迭代实现 ['id
无穷级分类是开拓中常见的环境,因此本文对常见的无穷极分类算法举办总结归纳. 1.轮回迭代实现 ['id'=>1,'name'=>'父1','father'=>NULL],2=>['id'=>2,'name'=>'父2',3=>['id'=>3,'name'=>'父3',4=>['id'=>4,'name'=>'儿1-1','father'=>1],5=>['id'=>5,'name'=>'儿1-2',6=>['id'=>6,'name'=>'儿1-3',7=>['id'=>7,'name'=>'儿2-1','father'=>2],8=>['id'=>8,9=>['id'=>9,'name'=>'儿3-1','father'=>3],10=>['id'=>10,'name'=>'儿3-1-1','father'=>9],11=>['id'=>11,'name'=>'儿1-1-1','father'=>4],12=>['id'=>12,'name'=>'儿2-1-1','father'=>7],]; function generateTree($items){ $tree = array(); foreach($items as $item){ if(isset($items[$item['father']])){ $items[$item['father']]['son'][] = &$items[$item['id']]; }else{ $tree[] = &$items[$item['id']]; } } return $tree; } $tree = generateTree($arr); print_r(json_encode($tree));输出: 说明: 这个算法操作了轮回迭代,将线性布局凭证父子相关以树形布局输出,算法的要害在于行使了引用. 利益:速率快,服从高. 弱点:数组的key值必需与id值沟通,未便于取出数据(同样行使迭代获取数据) 2.递归实现 ['id'=>1,'father'=>0],1=>['id'=>2,2=>['id'=>3,3=>['id'=>4,4=>['id'=>5,5=>['id'=>6,6=>['id'=>7,7=>['id'=>8,8=>['id'=>9,9=>['id'=>10,10=>['id'=>11,11=>['id'=>12,]; function generateTree($arr,$id,$step){ static $tree=[]; foreach($arr as $key=>$val) { if($val['father'] == $id) { $flg = str_repeat('└―',$step); $val['name'] = $flg.$val['name']; $tree[] = $val; generateTree($arr,$val['id'],$step+1); } } return $tree; } $tree = generateTree($arr,0); foreach ($tree as $val){ echo $val['name'].''; } 输出: 说明: 操作了递归,数组的key值与id值可以不沟通,最后以次序的布局输出数组 利益:利便遍历,查找父子元素 弱点:php不善于递归,数据量大的环境下服从会明显低落 以上就是本文的所有内容,但愿对各人的进修有所辅佐,也但愿各人多多支持编程之家。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读