无限分类递归代码:
//获取商品的面包屑导航 返回字符串
public static function getGoodsPosition($navid,$delimiter=">"){
$_tmp=self::get_goods_nav_position($navid,$delimiter);
return "<a href='/'>首页</a> {$delimiter} ".implode("",$_tmp);
}
//获取商品面包屑导航 子类 返回 数组
public static function get_goods_nav_position($navid,$delimiter=">"){
define("id","id");
$arr=array();
$_nav= self::getCache("goodsNav");
foreach($_nav as $key=>$val){
if($val[id]==$navid){
$arr[]="<a href='?a=listgoods&id={$val[id]}'>{$val[classname]}</a> ".$delimiter;
$arr=array_merge(self::get_goods_nav_position($val[pid],$delimiter),$arr);
}
}
return $arr;
}
//关于商城栏目的获取
public static function getGoodsNav($html='--',$pid=0,$level=0){
$arr=array();
$_nav= self::getCache("goodsNav");
foreach($_nav as $key=>$v){
if($v['pid']==$pid){
$v['level']=$level+1;
$v['html']=str_repeat($html,$level);
$arr[]=$v;
$arr=array_merge($arr,self::getGoodsNav($html,$v['id'],$level+1));
}
}
return $arr;
}
//获取一级一级的目录 sun
public static function getGoodsNavsun($name="sun",$pid=0){
$arr=array();
$_nav=self::getCache("goodsNav");
foreach($_nav as $key=>$val){
if($val[pid]==$pid){
$_tmp=self::getGoodsNavsun($name,$val[id]);
$val[$name]=sizeof( $_tmp)>0?$_tmp:"";
$arr[]=$val;
}
}
return $arr;
}
//查找 父类
public static function getGoodsParents($id){
$arr=array();
$_nav= self::getCache("goodsNav");
foreach($_nav as $v){
if($v[id]==$id){
$arr[]=$v;
$arr=array_merge(self::getGoodsParents($v[pid]),$arr);
}
}
return $arr;
}
//查找 子类所有的ID
public static function getGoodsSunids($pid){
$arr=array();
$_nav= self::getCache("goodsNav");
foreach($_nav as $key=>$val){
if($val['pid']==$pid){
$arr[]=$val['id'];
$arr=array_merge(self::getGoodsSunids($val['id']),$arr);
}
}
return $arr;
}
//给定一下ID获取他下面所有的子类. 数组
public static function getGoodsSuns($pid){
$arr=array();
$_nav= self::getCache("goodsNav");
foreach($_nav as $key=>$v){
if($v['pid']==$pid){
$arr[]=$v;
//$arr=array_merge($arr,self::getGoodsSuns($v['id'])); // 如果我只想获取pid的子类,那不用执行此代码
}
}
return $arr;
}
public function getNav($pid=0,$level=0){
$arr=array();
//$_nav=S("_nav"); //从缓存中读取数据
//if(!$_nav){
$_nav=$this->order("sortId asc")->select();
// S("_nav",$_nav);
//}
foreach($_nav as $key=>$v){
if($v['pid']==$pid){
$v['level']=$level;
$arr[]=$v;
$arr=array_merge($arr,$this->getNav($v['id'],$level+1));
}
}
return $arr;
}
//得到这个类下面所有的Ids
public function getNavIds($_nav,$pid=0){
$arr=array();
foreach($_nav as $key=>$val){
if($val['pid']==$pid){
$arr[]=$val['id'];
$arr=array_merge($arr,$this->getNavIds($_nav,$val['id']));
}
}
return $arr;
}