搜尋

首頁  >  問答  >  主體

PHP 遞迴問題,求救

已经有数据
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    
)


#
给你一个大大的么么给你一个大大的么么2570 天前1069

全部回覆(3)我來回復

  • 易风课堂

    易风课堂2017-11-17 21:15:56

    因為你使用的是全域變量,它在整個程式的運作過程中,是不會銷毀的。一般會在你在一段程式碼中,調 用該方法時才會出現,如果頁面中只呼叫一次,這樣寫是沒有任何問題的。

    你可以換一個思路,把下面的遞歸一呼叫改一下。盡量不要使用全域的,在這裡,你可以直接使用一個陣列變數來處理。

    回覆
    1
  • 给你一个大大的么么

    謝謝,我在getAllID($uid)裡面加了一個& getAllID(&$uid)就可以了。

    给你一个大大的么么 · 2017-11-20 10:05:45
  • 给你一个大大的么么

    给你一个大大的么么2017-11-17 14:51:05

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

    回覆
    1
  • 取消回覆