比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了。
id
1
2
3
4
5
6
7
代码:category.class.php
function tree(&$list,$pid=0,$level=0,$html='--'){
}
下面是效果:
到此,我们就实现了最简单的php无限极分类了,这个在工作中用的很多的。
另一种实现思路 和上面一个意思
function getAll($node_list,$parent_id=0,$leave=0){
static $result;
foreach ($node_list as $key => $val) {
if($val['parent_id']==$parent_id){
$val['leave']=$leave;
$result[]=$val;
$this->getAll($node_list,$val['cat_id'],$leave+1);
}
}
//print_r($result);die;
return $result;
}
前台处理:
<?php foreach($list as $v){?>
<option value="<?php echo $v['cat_id']?>"><?php echo str_repeat(' --|',$v['leave'])?><?php echo $v['cat_name']?></option>
<?php
}
?>
实现效果:
大家知道分类多了,递归效率也就低了,所以,有了下面的算法:预排序遍历树算法进行无限分类