php实现无限级分类
2016-06-01 00:00
477 查看
摘要: php实现无限级分类
1,数组
2,递归,查找子孙树
3,递归,求家谱树
家谱树的应用 ,如面包屑导航 首页 >手机类型 >CDMA手机 >公益PHP >递归应用
4,迭代,求家谱树
1,数组
$area
=
array
(
array
(
'id'
=>1,
'name'
=>
'安徽'
,
'parent'
=>0),
array
(
'id'
=>2,
'name'
=>
'海淀'
,
'parent'
=>7),
array
(
'id'
=>3,
'name'
=>
'濉溪县'
,
'parent'
=>5),
array
(
'id'
=>4,
'name'
=>
'昌平'
,
'parent'
=>7),
array
(
'id'
=>5,
'name'
=>
'淮北'
,
'parent'
=>1),
array
(
'id'
=>6,
'name'
=>
'朝阳'
,
'parent'
=>7),
array
(
'id'
=>7,
'name'
=>
'北京'
,
'parent'
=>0),
array
(
'id'
=>8,
'name'
=>
'上地'
,
'parent'
=>2)
);
2,递归,查找子孙树
function
subtree(
$arr
,
$id
=0,
$lev
=1) {
$subs
=
array
();
// 子孙数组
foreach
(
$arr
as
$v
) {
if
(
$v
[
'parent'
] ==
$id
) {
$v
[
'lev'
] =
$lev
;
$subs
[] =
$v
;
// 举例说找到array('id'=>1,'name'=>'安徽','parent'=>0),
$subs
=
array_merge
(
$subs
,subtree(
$arr
,
$v
[
'id'
],
$lev
+1));
}
}
return
$subs
;
}
$tree
=subtree(
$area
,0,1);
foreach
(
$tree
as
$v
) {
echo
str_repeat
(
' '
,
$v
[
'lev'
]),
$v
[
'name'
],
'<br />'
;
}
3,递归,求家谱树
家谱树的应用 ,如面包屑导航 首页 >手机类型 >CDMA手机 >公益PHP >递归应用
function
familytree(
$arr
,
$id
) {
$tree
=
array
();
foreach
(
$arr
as
$v
) {
if
(
$v
[
'id'
] ==
$id
) {
// 判断要不要找父栏目
if
(
$v
[
'parent'
] >0) {
// parnet>0,说明有父栏目
$tree
=
array_merge
(
$tree
,familytree(
$arr
,
$v
[
'parent'
]));
}
$tree
[] =
$v
;
// 以找到上地为例
}
}
return
$tree
;
}
print_r(familytree(
$area
,8));
// 北京->海淀->上地
4,迭代,求家谱树
// 迭代,效率比递归高,代码也没多.
// 找家谱树推荐用迭代
function
tree(
$arr
,
$id
) {
$tree
=
array
();
while
(
$id
!==0) {
foreach
(
$arr
as
$v
) {
if
(
$v
[
'id'
] ==
$id
) {
$tree
[] =
$v
;
$id
=
$v
[
'parent'
];
break
;
}
}
}
return
$tree
;
}
print_r(tree(
$area
,8));
相关文章推荐
- PHP实现无限级分类分析
- php基本功之_get(),_set()的用法
- php程序优化技巧大全
- 文件下载: 云--->php服务---pc
- CI(CodeIgniter)框架~验证码。。。
- 深入PHP 第三章笔记
- win10+PHP7
- php判断文件存在是用file_exists 还是 is_file
- getOutputStream和getWriter互斥问题
- PHP下Unix时间戳与日期互转(解决1970年前及2038年后问题)
- ThinkPhp的CURD操作和对应api接口代码
- PHP读取docx文档内容
- PHP MySQL Order By
- 一、ThinkPHP的介绍
- 一、ThinkPHP的介绍
- 一、ThinkPHP的介绍
- PHP检测url重定向的最终地址
- php do while循环实例
- seaborn ——Jointplot
- Lumen (Laravel子框架) 简介及分析