基于递归实现的php树形菜单代码
本文实例讲述了基于递归实现的php树形菜单代码。分享给大家供大家参考。具体实现方法如下:
开发电子商务网站的时候,做了这个显示树形菜单的功能,用的递归实现的PHP树形菜单函数。具体代码如下:
publicfunctionprocCategory($sid,$pid){ $return=array(); $key=0; static$arr=array();//分类级别参考数组 $sql= "selectcid,pcid,namefromshop_goods_catalogwheresid='{$sid}'andpcid='{$pid}'"; $result=$this->__db->query($sql); while($row=$this->__db->fetchArray($result)){ $nbsp=''; if($row['pcid']==0){ $arr=array(); } $arr[]=$row['pcid']; //顶级分类不添加树形结构标识。 if($row['pcid']>0){ //根据分类级别添加树形结构标识 $key=array_search($row['pcid'],$arr); for($i=0;$i<$key;$i++){ $nbsp.=' '; } //重构分类级别参考数组 if(count($arr)>1&&count(array_keys($arr,$row['pcid']))>1){ $arr=array_slice($arr,0,$key+1); } } $row['name']=$nbsp.$row['name']; $row['level']=$key;//分类级别,0为顶级分类,1为二级分类,用于样式设定或其他需求 $return[]=$row; $r=$this->procCategory($sid,$row['cid']); $return=array_merge($return,$r); } return$return; }
由于递归的效率相对较低,如果注重程序效率的话,不要用此方法,或者对此方法进行改进使用。
希望本文所述对大家的PHP程序设计有所帮助。