PHP高效的无限级分类代码
发布时间:2018-03-15
编辑:夏桀
阅读(680)
class Tree{
public $ret = '';
/**
* 获取树型结构
* @param 数组 $data
* @param 父id $pid
* @param 层级 $count
* @return array()
*/
public function tree(&$data,$pid = 0,$level = 1) {
foreach ($data as $key => $value){
if($value['parent_id']==$pid){
$value['level'] = $level;
$this->ret[]=$value;
unset($data[$key]);
$this->tree($data,$value['id'],$level+1);
}
}
return $this->ret;
}
}
?>使用方法对数据库数组按parent_id进行asc排序
实例化Tree类,调用tree方法,得到排序后的数据
在页面中循环输出,level为层级,用于生成树形结构实际运用/**
* 分类
*/
public function category(){
$categoryModel = new BlogCategory();
$result = $categoryModel->order(["parent_id"=>"ASC","list_order" => "ASC"])->select()->toArray();
$tree = new Tree();
$category = $tree->tree($result);
foreach ($category as $n => $t) {
$category[$n]['icon_level'] =$this->_getIconLevel($category[$n]['level']);
}
$this->assign('category', $category);
return $this->fetch();
}
protected function _getIconLevel($level=1){
$icon = [' │ ', ' ├─ '];
$str='';
for ($i=1;$i
if(($level-$i)==1){
$str.=$icon['1'];
}else{
$str.=$icon['0'];
}
}
return $str;
}