已经有数据 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 )
因为你使用的是全局变量,它在整个程序的运行过程中,是不会销毁的。一般会在你在一段代码中,调 用该方法时才会出现,如果页面中只调用一次,这样写是没有任何问题的。
你可以换一个思路,把下面的递归一调用改一下。尽量不要使用全局的,在这里,你可以直接使用一个数组变量来处理。
请大家帮帮忙好吗,工作一直卡这很久了