数组 生成无限极分类树

/**
 * 生成无限极分类树
 * @param $arr '数据数组结构'
 * @param $key_id '主键id的key'
 * @param $parent_id '区分层级关系的 Key名'
 * @return array
 */
function make_tree($arr,$key_id,$parent_id)
{
    $refer = array();
    $tree  = array();

    foreach($arr as $k => $v){
        $refer[$v[$key_id]] = & $arr[$k]; //创建主键的数组引用
    }

    foreach($arr as $k => $v){
        $pid = $v[$parent_id];  //获取当前分类的父级id
        if($pid == 0){
            $arr[$k]['parent_id'] = (string)$arr[$k]['parent_id'];
            $arr[$k]['children'] = [];
            $tree[] = & $arr[$k];  //顶级栏目

        }else{
            if(isset($refer[$pid])){
                $arr[$k]['parent_id'] = (string)$arr[$k]['parent_id'];
                $refer[$pid]['children'][] = & $arr[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中
            }
        }
    }
    return $tree;
}

欢迎评论加好友 VX qubojie

你可能感兴趣的:(PHP代码)