php无限极分类的原理,php无限极分类实现的方法
时间:2025-03-12 17:35:22
作者:兔宝宝游戏网
浏览:4
php无限极分类,最近不少朋友在找php无限极分类实现的方法的相关介绍,兔宝宝游戏网给大家详细的介绍一下,希望对大家有帮助。
1、php无限极分类的原理:
初始化的数据
//初始化原始数据(id=>编号,name=>显示名称,pid=>父级目录id,sort=>排序顺序)$data[1]=array('id'=>'1','name'=>'一级目录A','pid'=>'0','sort'=>'1');
$data[2]=array('id'=>'2','name'=>'一级目录B','pid'=>'0','sort'=>'2');
$data[3]=array('id'=>'3','name'=>'一级目录C','pid'=>'0','sort'=>'3');
$data[4]=array('id'=>'4','name'=>'一级目录D','pid'=>'0','sort'=>'4');
$data[5]=array('id'=>'5','name'=>'二级目录A-1','pid'=>'1','sort'=>'1');
$data[6]=array('id'=>'6','name'=>'二级目录A-2','pid'=>'1','sort'=>'2');
$data[7]=array('id'=>'7','name'=>'二级目录A-3','pid'=>'1','sort'=>'3');
$data[8]=array('id'=>'8','name'=>'二级目录B-1','pid'=>'2','sort'=>'1');
$data[9]=array('id'=>'9','name'=>'二级目录B-2','pid'=>'2','sort'=>'2');
$data[10]=array('id'=>'10','name'=>'二级目录B-3','pid'=>'2','sort'=>'3');
$data[11]=array('id'=>'11','name'=>'二级目录C-1','pid'=>'3','sort'=>'2');
$data[12]=array('id'=>'12','name'=>'二级目录D-1','pid'=>'4','sort'=>'1');
$data[13]=array('id'=>'13','name'=>'二级目录D-2','pid'=>'4','sort'=>'2');
$data[14]=array('id'=>'14','name'=>'三级目录A-2-1','pid'=>'6','sort'=>'1');
$data[15]=array('id'=>'15','name'=>'三级目录A-2-2','pid'=>'6','sort'=>'2');
$data[16]=array('id'=>'16','name'=>'三级目录C-1-1','pid'=>'11','sort'=>'1');
$data[17]=array('id'=>'17','name'=>'三级目录B-2-1','pid'=>'9','sort'=>'2');
显示树结构
functionprintTree($data,$level=0){foreach($dataas$key=>$value){for($i=0;$i<=$level;$i++){echo' ';
}echo$value['name'];echo'
';if(!empty($value['children'])){
printTree($value['children'],$level+1);
}
}
}
使用递归的方式获取无限极分类数组
functiongetNodeTree(&$list,&$tree,$pid=0){foreach($listas$key=>$value){if($pid==$value['pid']){
$tree[$value['id']]=$value;unset($list[$key]);
getNodeTree($list,$tree[$value['id']]['children'],$value['id']);
}
}
}
使用引用-无限极分类
functioncreateNodeTree(&$list,&$tree){foreach($listas$key=>$node){if(isset($list[$node['pid']])){
$list[$node['pid']]['children'][]=&$list[$key];
}else{
$tree[]=&$list[$node['id']];
}
}
}
调用
//递归-无限极分类调用getNodeTree($data,$tree);
printTree($tree);//使用引用-无限极分类调用createNodeTree($data,$tree);
printTree($tree);
2、php 几种常用的递归 无限极分类:
/**
*递归实现无限极分类
*@param$array分类数据
*@param$pid父ID
*@param$level分类级别
*@return$list分好类的数组直接遍历即可$level可以用来遍历缩进
*/
functiongetTree($array,$pid=0,$level=0){
//声明静态数组,避免递归调用时,多次声明导致数组覆盖
static$list=[];foreach($arrayas$key=>$value){//第一次遍历,找到父节点为根节点的节点也就是pid=0的节点
if($value['pid']==$pid){//父节点为根节点的节点,级别为0,也就是第一级
$value['level']=$level;//把数组放到list中
$list[]=$value;//把这个节点从数组中移除,减少后续递归消耗
unset($array[$key]);//开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
getTree($array,$value['id'],$level+1);
}
}
总结:以上内容就是针对php无限极分类的原理,php无限极分类实现的方法的详细介绍,大家可以参考一下。
标题:php无限极分类的原理,php无限极分类实现的方法
链接:http://www.qzj2.com/article/32762.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
gta5武器秘籍大全(完整版)无限子弹,gta5的武器秘籍有哪些
gta5武器秘籍大全,完整版无限子弹,gta5的武器秘籍有哪些,gta5武器全满代码是:IFWEREARCHMAN。其他秘籍:一、武
2025-03-12
热门手游
更多
热门攻略
更多
-
海龟汤题目和答案全套恐怖高难度,细思极恐的冷门海龟汤 2025-03-12
-
女生手抄上林赋是什么梗的含义(为什么抄上林赋得心上人) 2025-03-12
-
侠盗飞车罪恶都市秘籍大全(完整版),侠盗飞车罪恶都市秘籍有哪些呢 2025-03-12
-
gta5武器秘籍大全(完整版)无限子弹,gta5的武器秘籍有哪些 2025-03-12
-
梦幻西游义绝墨魂笔3x攻略(神器义绝墨魂笔之踪攻略) 2025-03-12
-
公交车里抓着摇曳的手环诗情,清晨时见雾青草沾雨露是什么歌 2025-03-12
热游排行榜
更多