当前位置:首页 > 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. $arr[] = $row['pcid']; 
  13. //顶级分类不添加树形结构标识。 
  14. if($row['pcid']>0){ 
  15. //根据分类级别添加树形结构标识 
  16. $key = array_search($row['pcid'],$arr); 
  17. for($i=0;$i<$key;$i++){ 
  18. $nbsp .= '&nbsp;&nbsp;'
  19. //重构分类级别参考数组 
  20. if(count($arr)>1&&count(array_keys($arr,$row['pcid']))>1){ 
  21. $arr = array_slice($arr,0,$key+1); 
  22. $row['name'] = $nbsp.$row['name']; 
  23. $row['level'] = $key//分类级别,0为顶级分类,1为二级分类,用于样式设定或其他需求 
  24. $return[] = $row
  25. $r = $this->procCategory($sid,$row['cid']); 
  26. $return = array_merge($return,$r); 
  27. }//www.phpfensi.com 
  28.  
  29. return $return

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

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

Tags: php树形菜单

分享到: