2012-05-03 37 views
1

私はエコーですべての正しい値を得ることができる関数を持っていますが、配列全体の取得方法を知ることができません。誰かが私が子供のユーザーのすべてを得るために把握するのを助けることができますか?再帰関数から値を返す

あなたが pass by reference­Docsに必要
$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

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ループを進むにつれて徐々に合計されます。