当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究。
到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了。
比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了。
id
name
pid
sort
1
PHP
0
1
2
Javascript
0
2
3
MySQL
0
3
4
php类
1
1
5
smarty
1
2
6
私有方法
4
1
7
jQuery
2
1
name
pid
sort
1
PHP
0
1
2
Javascript
0
2
3
MySQL
0
3
4
php类
1
1
5
smarty
1
2
6
私有方法
4
1
7
jQuery
2
1
category.class.php
class Category {
static public function
sortOut($cate,$pid=0,$level=0,$html='--'){
$tree = array();
foreach($cate as $v){
if($v['pid'] == $pid){
$v['level'] = $level + 1;
$v['html'] = str_repeat($html, $level);
$tree[] = $v;
$tree =
array_merge($tree,
self::sortOut($cate,$v['id'],$level+1,$html));
}
}
return $tree;
}
}
static public function
sortOut($cate,$pid=0,$level=0,$html='--'){
$tree = array();
foreach($cate as $v){
if($v['pid'] == $pid){
$v['level'] = $level + 1;
$v['html'] = str_repeat($html, $level);
$tree[] = $v;
$tree =
array_merge($tree,
self::sortOut($cate,$v['id'],$level+1,$html));
}
}
return $tree;
}
}
这里的$cate是查询上面表获取的一个二维数组:这么就不写了
下面是效果:
id
name
pid level
sort
1
PHP
0
1
1
4
--php类
1
2
1
6
----私有方法
4
3
1
5
--smarty
1
2
2
name
pid level
sort
1
PHP
0
1
1
4
--php类
1
2
1
6
----私有方法
4
3
1
5
--smarty
1
2
2
2
Javascript
0
1
2
7
--php类
2
2
1
3
MySQL
0
1
3
到此,我们就实现了最简单的php无限极分类了,这个在工作中用的很多的。
----------------------------------------------
好像不需要array_merge
function
tree(&$list,$pid=0,$level=0,$html='--'){
static $tree
= array();
foreach($list as $v){
if($v['pid'] == $pid){
$v['sort'] = $level;
$v['html'] =
str_repeat($html,$level);
$tree[] = $v;
tree($list,$v['id'],$level+1);
}
}
return
$tree;
}
tree(&$list,$pid=0,$level=0,$html='--'){
static $tree
= array();
foreach($list as $v){
if($v['pid'] == $pid){
$v['sort'] = $level;
$v['html'] =
str_repeat($html,$level);
$tree[] = $v;
tree($list,$v['id'],$level+1);
}
}
return
$tree;
}