php实现无限级分类及分类数据渲染

php实现无限级分类数据渲染
下面试一个大概样式,可以无限级分下去;大家可以根据自己的需求编写样式,原理都是一样的
php实现无限级分类及分类数据渲染_第1张图片
先把想要的样式写出来调试好,进行注释,方便后面php直接渲染数据结构

			

然后获取所有分类数据数组,进行重构

 		//产品分类
        $pclass=Db::name('class')->select();//所有数据
        $items = array();
        foreach($pclass as $v){
     //构建一个新数组,新数组的key是自己的主键id
            $items[$v['id']] = $v;
        }
        $tree = array();
        foreach($items as $k => $item){
     //将已经重构的数组遍历,并判断当前数组元素的父级分类是否存在
            if(isset($items[$item['pid']])){
     
                $items[$item['pid']]['son'][] = &$items[$k];

            }else{
     
                $tree[] = &$items[$k];
            }
        }
	$mclassstr=$this->loopm($tree,0,'url/xxxx/xxx');//第三个参数,指点击分类跳转的页面链接
	$this->assign('mclassstr',$mclassstr);

接下来将前面写好的分类结构进行循环渲染

public function loopm($class,$level,$url){
     
        $str='';
        if($level==0){
     
            foreach($class as $item){
     
                $str.='
.$url.$item['id'].'.html" target="_blank">'.$item['cname'].''; if(isset($item['son']) && $item['son']){ $str.=''; } $str.='
'; if(isset($item['son']) && $item['son']){ $str.=$this->loopm($item['son'],$level+1,$url); } $str.="
"
; } } else if($level==1){ foreach($class as $item){ $str.='
'; $str.='
.$url.$item['id'].'.html" target="_blank">'.$item['cname'].''; if(isset($item['son']) && $item['son']){ $str.='
'
; $str.=$this->loopm($item['son'],$level+1,$url); }else{ $str.="
"
; } $str.='
'; } } else{ $kongge=''; for($i=0;$i<$level;$i++){ $kongge.=' '; } foreach($class as $item){ $str.='
'; $str.='
.$url.$item['id'].'.html" target="_blank">'.$item['cname'].''; if(isset($item['son']) && $item['son']){ $str.='
'
; $str.=$this->loopm($item['son'],$level+1,$url); }else{ $str.="
"
; } $str.='
'
; } } return $str; }

最后在html页面需要渲染数据的地方,进行渲染

<div>
	{$mclassstr}
div>

你可能感兴趣的:(PHP积累,php无限级分类,无限级分类,无限级分类及数据渲染,php)