//递归 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;
}直接复制这些代码放在项目中,即可使用,