PHP 遞迴問題,求救
给你一个大大的么么
给你一个大大的么么 2017-11-17 11:37:06
0
3
1033
已经有数据
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
给你一个大大的么么

請大家幫忙好嗎,工作一直卡這很久了

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!