php递归无限极+冒泡排序

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;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值