PHP 递归问题,求助
给你一个大大的么么
给你一个大大的么么 2017-11-17 11:37:06
0
3
1072
已经有数据
id  fid
23  0
27  23
28  23
34  38
33  0

//getID 是从数据库取出来的,目前 23 和 33 
foreach ($getID as $k => $v) {
    $allAgentID = getAllID($v);
    print_r($allAgentID);
}

function getAllID($uid){
	global $empire,$dbtbpre,$userid;
	$userid[] =$uid ;
	$s= "select userid from {$dbtbpre}enewsmember where fid='".$uid."' and checked=1 order by userid asc";
	$sql=$empire->query($s);
	while($u=$empire->fetch($sql)) {
	    getAllID($u[userid]);
	}
	return $userid;
}

//输出结果
Array    
(    
[0] => 23    
[1] => 27    
[2] => 28    
[3] => 34    
)    
Array    
(    
[0] => 23    
[1] => 27    
[2] => 28    
[3] => 34    
[4] => 33    
)      

为什么当$v=33的时候没有清楚之前的数组,还把之前的数组合并在一起

请问有什么办法能得到以下数组吗?
当$v=23时
Array    
(    
[0] => 23    
[1] => 27    
[2] => 28    
[3] => 34    
)  

当$v=33时  
Array    
(    
[4] => 33    
)


#
给你一个大大的么么
给你一个大大的么么

全部回复(2)
易风课堂

因为你使用的是全局变量,它在整个程序的运行过程中,是不会销毁的。一般会在你在一段代码中,调 用该方法时才会出现,如果页面中只调用一次,这样写是没有任何问题的。

你可以换一个思路,把下面的递归一调用改一下。尽量不要使用全局的,在这里,你可以直接使用一个数组变量来处理。

  • 回复 谢谢,我在getAllID($uid)里面加了一个& getAllID(&$uid)就可以了。
    给你一个大大的么么 作者 2017-11-20 10:05:45
给你一个大大的么么

请大家帮帮忙好吗,工作一直卡这很久了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板