树形结构的生成与恢复:以‘children‘作为子级树形结构的key值PHP版

生成树:

function listToTree($list, $pk = 'fid', $pid = 'pid', $child = 'children', $root = 0) {

$tree = array();

if (is_array($list)) {

    $refer = array();

    foreach ($list as $key => $data) {

        $refer[ $data[ $pk ] ] = &$list[ $key ];

    }

    foreach ($list as $key => $data) {

        // 判断是否存在parent

        $parentId = $data[ $pid ];

    if ($root == $parentId) {

         $tree[] = &$list[ $key ];

    } else {

         if (isset($refer[$parentId])) {

            $parent = &$refer[ $parentId ];

            $parent[ $child ][ $data[ $pk ] ] = &$list[ $key ];

            $parent[ $child ] = array_values($parent[ $child ]);

                }

            }

        }

    }

    return $tree;

}

树形结构解除:

function treetoarray($array){

    $arr = array();

    if(is_array($array) && !empty($array)){

        foreach($array as $w) {

            //有子集,继续分类

            if(isset($w['children']) && !empty($w['children'])) {

                $t = $w['children'];

                unset($w['children']);

                $arr[] = $w;

                if(is_array($t)){

                    $arr = array_merge($arr,tree2array($t));

                }

            } else {

                unset($w['children']);

                $arr[] = $w;

            }

        }

        return $arr;

    }else{

        return false;

    }

}

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...