开发教程

在php中如何将数据列表转换为数据树?比如无限级菜单

在我们系统开发中,经常会遇到无限级菜单格式化为数据树。这样一来是从视觉上好看,另外就是便于管理一步了然。

数据树有个特点就是有一根节点,下面跟着无限的子节点。这样我们需要用到递归循环,递归循环我们尤为注意的是返回跳出的条件,如果没有一个好的跳出条件,那么程序就会不断循环下去,导致系统崩溃。人们常说的,我自己写的系统被我自己写的代码杀死的,就这么一回事。

废话少说,上代码。


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;
}