2012-05-03 187 views
1

我有一个函数,可以通过echo获取所有正确的值,但是当我无法弄清楚如何获取整个数组时返回。有人能帮我找出所有的小孩用户吗?从递归函数返回一个值

$useridarray[] = $userid; 
    getchildren($useridarray, $useridarray); 

    function getchildren($array, $totalarray) 
    { 
     foreach($array as $arr) 
     { 
      $db_name = "dbname"; 
      $connection = @mysql_connect("localhost", "username", "password") or die(mysql_error()); 
      $db = @mysql_select_db($db_name, $connection) or die(mysql_error()); 
      $sql = " 
        select * 
        from users 
        where creator = '$arr' 
        "; 
      $result = @mysql_query($sql, $connection) or die(mysql_error()); 
      while($row = mysql_fetch_array($result)) 
      { 
       $newchildren[] = $row['id']; 
       $totalarray[] = $row['id']; 
       //echo $row['id'] . ' '; 
      } 
      mysql_close(); 
      getchildren($newchildren, $totalarray); 
     } 
    } 
+1

只是在实际和性能方面,我会创建一个函数来创建连接并选择数据库,并将这些细节传递给您的函数。将减少创建和关闭连接的开销。 –

回答

1

您需要pass by reference­Docs

function getchildren($array, &$totalarray) 
          ^

用法:

$useridarray[] = $userid; 
getchildren($useridarray, $useridarray); 
var_dump($useridarray); # your result 
0

您需要添加返回之前

mysql_close(); 
return getchildren($newchildren, $totalarray); 
0

我不熟悉PHP语法,但你可能想要实施一个“停止标准”来返回你的结果。因此,在您的实例中,您似乎希望getChildren返回localResults +递归getChildren结果,并在您通过foreach循环时递增累计。