非递归实现无限极分类

    public static function ListToTree($list, $primaryKey='id', $parentKey = 'up_id', $childStr = 'children', $root = 0)
    {
        $tree = array();
        if (is_array($list)) {

            //创建基于主键的数组引用
            $refer = array();

            foreach ($list as $key => $data) {
                $refer[$data[$primaryKey]] = &$list[$key];
            }

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

                //判断是否存在parent
                $parantId = $data[$parentKey];

                if ($root == $parantId) {
                    $tree[] = &$list[$key];

                } else {

                    if (isset($refer[$parantId])) {
                        $parent = &$refer[$parantId];
                        $parent[$childStr][] = &$list[$key];
                    }

                }
            }
        }

        return $tree;
    }

 

posted @ 2021-05-21 15:48  可爱香草  阅读(9)  评论(0)    收藏  举报  来源