public function index()

{

    $data = [


            [

                'id'=>1,

                'parent_id' => 0,

                'name' => '第一个'

            ],

 

            [

                'id'=>2,

                'parent_id' => 0,

                'name' => '第二个'

            ],

 

            [

                'id'=>3,

                'parent_id' => 1,

                'name' => '第三个'

            ],

 

        ];

        $r = $this->list_to_tree($data);

        dump($r);

    } 

#数组转树结构#

function list_to_tree($list, $root = 0, $pk = 'id', $pid = 'parent_id', $child = 'children'){

    // 创建Tree

    $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 = 0;

            if (isset($data[$pid])) {

                $parentId = $data[$pid];

            }

            if ((string)$root == $parentId) {

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

            } else {

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

                    $parent = &$refer[$parentId];

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

                }

            }

        }

    }

    return $tree;
}

 

#树结构转数组#

 

function tree_to_list($tree = [], $children = 'children'){

    if (empty($tree) || !is_array($tree)) {

        return $tree;

    }

    $arrRes = [];

    foreach ($tree as $k => $v) {

        $arrTmp = $v;

        unset($arrTmp[$children]);

        $arrRes[] = $arrTmp;

        if (!empty($v[$children])) {

            $arrTmp = tree_to_list($v[$children]);

            $arrRes = array_merge($arrRes, $arrTmp);

        }

    }

    return $arrRes;
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。