您的位置:首页 > 编程语言 > PHP开发

php无限分类

2015-10-29 16:33 561 查看
关于无限分类是在兄弟连的视频中看过,知道基本思想,感觉很简单,自己肯定会;经过电魂笔试后,才发现看似简单的题目不经过自己亲自做一遍,是不知道自己是不是真正会做。

基本思想是用递归实现,但是就这么个简单的算法我调试了一个上午(用PHP写的),始终没找到自己的错误,最后才发现是因为var_dump()打印数组的时候,当数组过多或者维度过大的时候,会以...号取代,也就是不显示,我一直以为...是空数组的意思,真是无语。在网上找到了完全显示的方法,下面贴下链接:
http://blog.sina.com.cn/s/blog_461c24d50101h62x.html


1.数据库的设计:

至少三个字段(id,pid,name),下面是我的数据库设计



2.接下来就是PHP代码部分:

<?php
$link=mysql_connect("localhost","root","");
mysql_select_db("test",$link);

$sql="select * from classfiy where id";
$result=mysql_query($sql);
$assoc=array();
while($row=mysql_fetch_assoc($result))
{
array_push($assoc,$row);
}
$a=fun($assoc,0);
$str=print_fun($a);
echo $str;

//打印分类
function print_fun($assoc)
{
$str="<ul>";
foreach($assoc as $key=>$value)
{
$str.="<li>".$value["name"]."</li>";
if(!empty($value["list"]))
$str.=print_fun($value["list"]);
}
$str.="</ul>";
return $str;
}

//递归实现分类
function fun($assoc,$id)
{
$temp=array();
foreach($assoc as $key=>$value)
{
if($value["pid"]==$id)
{
$assoc[$key]["list"]=array();
$assoc[$key]["list"]=fun($assoc,$value["id"]);
array_push($temp,$assoc[$key]);
}
}
return $temp;
}
?>


3.查看结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: