PHP递归函数,将一维数组转树形结构,无限级树

1、拿出所有数据,父亲,儿子,孙子组成的一维数组(pid为上级id)
       
public functon getNode(){
    $list = NodeModel::where('category','=',1)->select()->toArray();
    // 0代表 -> pid=0 -> 一层遍历所有的父亲
    $list = GetTree::infiniteTree($list, 0);
}  

/**
 *一维数组转树形结构,无限级树
 */
public static function infiniteTree($data,$pid){        
    if (!is_array($data) || empty($data) ) return false;
        $tree = array();
        foreach ($data as $k => $v) {
            // 找出所有的儿子
            if ($v['pid'] == $pid) {
                // 将儿子数据赋值给sub键,递归看看儿子还有没有孙子
                $v['sub'] = self::infiniteTree($data,$v['id']);
                $tree[] = $v;
                // 删除遍历过的数组数据
                unset($data[$k]);
            }
    }
    return $tree;
}

 

你可能感兴趣的:(PHP)