已经有数据 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 )
易风课堂2017-11-17 21:15:56
因為你使用的是全域變量,它在整個程式的運作過程中,是不會銷毀的。一般會在你在一段程式碼中,調 用該方法時才會出現,如果頁面中只呼叫一次,這樣寫是沒有任何問題的。
你可以換一個思路,把下面的遞歸一呼叫改一下。盡量不要使用全域的,在這裡,你可以直接使用一個陣列變數來處理。