<?php// 树组的顺序即是分类的顺序,因此前当分类的下级子类一定要紧随其后$tree= array(1 => array('id'=>1, 'cname'=>'一级分类', 'pid'=>0),2 => array('id'=>2, 'cname'=>'二级分类', 'pid'=>1),3 => array('id'=>3, 'cname'=>'三级分类', 'pid'=>2),4 => array('id'=>4, 'cname'=>'四级分类', 'pid'=>3),5 => array('id'=>5, 'cname'=>'四级分类2', 'pid'=>3),6 => array('id'=>6, 'cname'=>'一级分类2', 'pid'=>0),);// 指定分类ID,返回子类量(不进行深度递归)function getChildTotal($id){global $tree; //静态变量$total = 0;foreach($tree as $value){if ($id == $value['pid']){$total++; }}return $total;}// 指定分类ID,并返回数组(不进行深度递归)function getChildArray($id){global $tree;$array = array();foreach($tree as $key=>$value){if ($id == $value['pid']){$array[$key] = $value;}}return $array;}// 递归查询方式将树数组转换成HTML嵌套树function getTreeHTML($tree){static $item = array();if ($tree){foreach($tree as $id => $node){if (!in_array($id, $item)){$item[] = $id;$html .= "<dl>";$html .= '<dt classify="'.$node['id'].'">'.$node['cname']."</dt>";if (getChildTotal($node['id'])){$tree_last = getChildArray($node['id']);foreach($tree_last as $v){$html .= '<dd>';$html .= getTreeHTML($tree_last);$html .= '</dd>';}}else{$html .= '';}$html .= '</dl>';}}}return $html;}$html = getTreeHTML($tree);echo $html;$html = getTreeHTML($tree);echo $html;?>
我需要通过递归来产生嵌套的HTML结构,这个似乎有点蛋疼,但之所以这样是确保HTMl嵌套就成为一棵树因为静态变量会冲突,所以不希望使用!!!!!!!!
我需要通过递归来产生嵌套的HTML结构,这个似乎有点蛋疼,但之所以这样是确保HTMl嵌套就成为一棵树因为静态变量会冲突,所以不希望使用!!!!!!!!
解决方案 »
- PHP可以上传文件 就是不能存到数据库
- MySQL中查询正常,PHP中却报错
- FreeBSD中如今禁止普通用户到处游走
- IIS6安装PHP5死活不行。见鬼了!!!
- 关于javascript,帮帮我
- 在C:\WINNT\TEMP\目录里产生大量临时文件,从PHP1.tmp一直到PHPffff.tmp,共6万多~?
- 关于动态页面
- 我的mysql一运行mysqld-shareware -install提示Failed to install Service.Why?Winnt+sp4
- php使用curl获取跳转后的网址设置url地址的问题
- php判断手机访问,默认模板是web目录,改成:判断是不是手机访问,如果是就选择mobile模板
- for里一个“+”和“*”出现的问题!
- phpmyadmin的安装错误
<?php
$tree = array(
1 => array('id' => 1, 'cname' => '一级分类', 'pid' => 0),
2 => array('id' => 2, 'cname' => '二级分类', 'pid' => 1),
3 => array('id' => 3, 'cname' => '三级分类', 'pid' => 2),
4 => array('id' => 4, 'cname' => '四级分类', 'pid' => 3),
5 => array('id' => 5, 'cname' => '四级分类2', 'pid' => 3),
6 => array('id' => 6, 'cname' => '一级分类2', 'pid' => 0),
);
function getChildArray($pid,$tree){
$arr=array();
if(count($tree)>0){
foreach($tree as $node){
if($node['pid'] == $pid){
$arr[] = $node;
}
}
}
return $arr;
}
function getHtml($tree,$pid=0){
$list =getChildArray($pid,$tree);
$html ='';
if(count($list)>0){
$html ="<dl>\n";
foreach($list as $item){
$html.='<dt>id:'.$item['id'].'Name:'.$item['cname'].'PID:'.$item['pid']."</dt>\n";
}
$html.=getHtml($tree,++$pid);
$html.="</dl>\n";
}
return $html;
}echo getHtml($tree);
?>希望对你有帮助
<?php
$tree = array(
1 => array('id' => 1, 'cname' => '一级分类', 'pid' => 0),
2 => array('id' => 2, 'cname' => '二级分类', 'pid' => 1),
3 => array('id' => 3, 'cname' => '三级分类', 'pid' => 2),
4 => array('id' => 4, 'cname' => '四级分类', 'pid' => 3),
5 => array('id' => 5, 'cname' => '四级分类2', 'pid' => 3),
6 => array('id' => 6, 'cname' => '一级分类2', 'pid' => 0),
);
function getChildArray($pid,$tree){
$arr=array();
if(count($tree)>0){
foreach($tree as $node){
if($node['pid'] == $pid){
$arr[] = $node;
}
}
}
return $arr;
}
function getHtml($tree,$pid=0){
$list =getChildArray($pid,$tree);
$html ='';
if(count($list)>0){
$html ="<dl>\n";
foreach($list as $item){
$html.='<dt>id:'.$item['id'].'Name:'.$item['cname'].'PID:'.$item['pid']."</dt>\n";
$html.=getHtml($tree,$item['id']);
}
$html.="</dl>\n";
}
return $html;
}echo getHtml($tree);
?>
刚才有段代码写错了...