php通用递归

通用递归

/**
 * 无限极分类
 * @param array  $list
 * @param string $pk  
 * @param string $path
 * @param string $children
 * @return array 
 */
function getTree($list, $pk = 'id', $path = 'path', $children = 'children')
    {
    
    

        $tree = [];
        $packData = [];
        //重新设置键值
        foreach ($list as $data) {
    
    
            $packData[$data[$pk]] = $data;
        }

        foreach ($packData as $key => $val) {
    
    
            if ($val[$path] == 0) {
    
     //顶级分类
                $tree[] = &$packData[$key];
            } else {
    
    //关联子分类 使用引用方式递归下级数据
                $packData[$val[$path]][$children][] = &$packData[$key];
            }
        }

        return $tree;
    }

猜你喜欢

转载自blog.csdn.net/weixin_40172337/article/details/113896758