//递归 nav 得到option的列表 public static function navList($nav,$pid=0,$step=0,$_str=" "){ $_newArr=[]; if(is_array($nav)){ foreach($nav as $key=>$val){ if($val['pid']==$pid){ $val['step']=$step; $val['_str']=str_repeat($_str,$val['step']); $_newArr[]=$val; $_newArr=array_merge($_newArr,self::navList($nav,$val['id'],$step+1,$_str)); } } }else if(is_object($nav)){ foreach($nav as $key=>$val){ if($val->pid==$pid){ $val->step=$step; $val->_str=str_repeat($_str,$val->step); $_newArr[]=$val; $_newArr=array_merge($_newArr,self::navList($nav,$val->id,$step+1,$_str)); } } } return $_newArr; } //递归,把他的子类放在sun中,或指定到的一个变量中 public static function navList_sun($nav,$pid=0,$varSun="sun"){ $_newArr=[]; if(is_array($nav)){ foreach($nav as $key=>$val){ if($val['pid']==$pid){ $val[$varSun]=self::navList_sun($nav,$val['id'],$varSun); $_newArr[]=$val; } } }else if(is_object($nav)){ foreach($nav as $key=>$val){ if($val->pid==$pid){ $val->$varSun=self::navList_sun($nav,$val->id,$varSun); $_newArr[]=$val; } } } return $_newArr; } //获取此类下所有的id,并以数组的形式返回 public static function navList_getSunIds($nav,$pid){ $_newArr=[]; if(is_array($nav)){ foreach($nav as $key=>$val){ if($val['pid']==$pid){ $_newArr[]=$val['id']; $_newArr=array_merge($_newArr,self::navList_getSunIds($nav,$val['id'])); } } }else if(is_object($nav)){ foreach($nav as $key=>$val){ if($val->pid==$pid){ $_newArr[]=$val->id; $_newArr=array_merge($_newArr,self::navList_getSunIds($nav,$val->id)); } } } return $_newArr; }
直接复制这些代码放在项目中,即可使用,