function gatArray($node,$pid=0){
$arr=array();
//循环$node
foreach ($node as $v) {
//第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点
if($v['pid']==$pid){
//父节点为根节点的节点,级别为0,也就是第一级
//开始递归,查找父ID为该节点ID的节点,级别则为原级别+1,并把返回数组放在$v['child']中
$v['child']=gatArray($node,$v['id']);
//如果该节点不存在子级则释放掉child
if(count($v['child'])==0){
unset($v['child']);
}
//对$v['child']进行快速排序
//第一层可以理解为从数组中键为0开始循环到最后一个
for ($i=0;$i<count($v['child']);$i++){
//第二层为从$i+1的地方循环到数组最后
for ($j=$i+1;$j<count($v['child']);$j++){
比较数组中两个相邻值的大小
if ($v['child'][$i]["sort"] > $v['child'][$j]["sort"]) {
$tem=$v['child'][$i];// 这里临时变量,存贮$i的值
$v['child'][$i]=$v['child'][$j];// 第一次更换位置
$v['child'][$j]=$tem;// 完成位置互换
}
}
}//当前节点包括他的自己放到$arr
$arr[]=$v;
}
}//返回整理好的数组
return $arr;
}
php递归无限极+冒泡排序
最新推荐文章于 2021-03-11 02:09:52 发布