1.递归函数: 实现无限级分类列表
# 形式1:实现无限级分类列表
if(!function_exists('get_cate_list')){
//递归函数 实现无限级分类列表
function get_cate_list($list,$pid=0,$level=0) {
static $tree = array();
foreach($list as $row) {
if($row['pid']==$pid) {
$row['level'] = $level;
$tree[] = $row;
get_cate_list($list, $row['id'], $level + 1);
}
}
return $tree;
}
}
# 形式2:无限分类-权限
if (!function_exists('tree')) {
function tree($cate , $lefthtml = '|— ' , $pid=0 , $lvl=0 )
{
$arr = array();
foreach ($cate as $v){
if($v['pid'] == $pid){
$v['level'] = $lvl + 1;
$v['left_html'] = str_repeat($lefthtml,$lvl);
$v['left_catename'] = $v['left_html'].$v['cate_name'];
$arr[]=$v;
$arr= array_merge($arr, tree($cate, $lefthtml, $v['id'], $lvl+1 ));
}
}
return $arr;
}
}
2.引用方式实现: 父子级树状结构
// 父子级树状结构
if(!function_exists('get_tree_list')){
//引用方式实现 父子级树状结构
function get_tree_list($list){
//将每条数据中的id值作为其下标
$temp = [];
foreach($list as $v){
$v['son'] = [];
$temp[$v['id']] = $v;
}
//获取分类树
foreach($temp as $k=>$v){
$temp[$v['pid']]['son'][] = &$temp[$v['id']];
}
return isset($temp[0]['son']) ? $temp[0]['son'] : [];
}
}