public function tree($code='',$id=''){
$ids[]=$id;//记录自己及所有下级管理员id
if(!$id){
return '';
}
$grade = array($id =>1);//记录所有id的权限等级,初始值为第一级
$res=db('admin')->field('id,pid')->select();//数据库查询所有管理员的id及pid
$i=0;
$addid[1]=$ids;//第几级权限下拥有的id,初始值为第一级权限,id只有自己
do {//do..while..循环
$eqarr=$ids;//跳出循环条件,初始值相同
$i++;//$i=1
foreach ($addid[$i] as $v) {//循环输出每级权限的id
foreach ($res as $key=>$value) {//循环输出所有管理员
if($value['pid']==$v){//如果管理员的pid=此级权限的id
$ids[]=$value['id'];//令ids添加此id
$grade [$value['id'] ]= $i+1;
$addid[$i+1][]=$value['id'];//下一级权限添加此id
unset($res[$key]);//删除已经判断成功的管理员,减少程序运行时间
}
}
}
} while ( $ids!==$eqarr) ;//在执行上述语句后,如果二者不全等,则继续执行语句,否则退出循环
if($code==1){//字符串
return $ids;
}elseif($code==2){//数组
return $grade;
}
}