当前位置:首页 > PHP教程 > php应用 > 列表

基于递归实现的php树形菜单代码

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-27 16:11:45 浏览: 评论:0 

这篇文章主要介绍了基于递归实现的php树形菜单代码,采用了递归的方法遍历节点构造出树形菜单,是非常实用的技巧,需要的朋友可以参考下

本文实例讲述了基于递归实现的php树形菜单代码。分享给大家供大家参考。具体实现方法如下:

开发电子商务网站的时候,做了这个显示树形菜单的功能,用的递归实现的PHP树形菜单函数,具体代码如下:

  1. public function procCategory($sid,$pid){ 
  2. $return = array(); 
  3. $key = 0; 
  4. static $arr = array(); //分类级别参考数组 
  5. $sql =  "select cid,pcid,name from shop_goods_catalog where sid='{$sid}' and pcid = '{$pid}'"; 
  6. $result = $this->__db->query($sql); 
  7.  
  8. while($row=$this->__db->fetchArray($result)){ 
  9. $nbsp = ''; 
  10. if($row['pcid']==0){ 
  11. $arr = array(); 
  12. } 
  13. $arr[] = $row['pcid']; 
  14. //顶级分类不添加树形结构标识。 
  15. if($row['pcid']>0){ 
  16. //根据分类级别添加树形结构标识 
  17. $key = array_search($row['pcid'],$arr); 
  18. for($i=0;$i<$key;$i++){ 
  19. $nbsp .= '&nbsp;&nbsp;'; 
  20. } 
  21. //重构分类级别参考数组 
  22. if(count($arr)>1&&count(array_keys($arr,$row['pcid']))>1){ 
  23. $arr = array_slice($arr,0,$key+1); 
  24. } 
  25. } 
  26. $row['name'] = $nbsp.$row['name']; 
  27. $row['level'] = $key; //分类级别,0为顶级分类,1为二级分类,用于样式设定或其他需求 
  28. $return[] = $row; 
  29. $r = $this->procCategory($sid,$row['cid']); 
  30. $return = array_merge($return,$r); 
  31. }//www.phpfensi.com 
  32.  
  33. return $return; 
  34. } 

由于递归的效率相对较低,如果注重程序效率的话,不要用此方法,或者对此方法进行改进使用。

希望本文所述对大家的PHP程序设计有所帮助。

Tags: php树形菜单

分享到: