在我们系统开发中,经常会遇到无限级菜单格式化为数据树。这样一来是从视觉上好看,另外就是便于管理一步了然。
数据树有个特点就是有一根节点,下面跟着无限的子节点。这样我们需要用到递归循环,递归循环我们尤为注意的是返回跳出的条件,如果没有一个好的跳出条件,那么程序就会不断循环下去,导致系统崩溃。人们常说的,我自己写的系统被我自己写的代码杀死的,就这么一回事。
废话少说,上代码。
function list_to_tree($lists,$pid=0,$level=0) { $treeList=[]; foreach ($lists as $item){ if($item['pid']==$pid){ $item['level']=$level; $childItem=list_to_tree($lists,$item['id'],$level+1); if($childItem){ $item['child']=$childItem; } array_push($treeList,$item); } } return $treeList; }