2013-09-23 28 views
0

我有一個遞歸函數,它執行大量的函數和一些數據庫調用,以及不創建一些很酷的東西。我想將每個調用的結果保存到一個數組中。從遞歸函數創建平面數組而不是展平後

所以我這樣做了,我得到了一個多維數組,其結構與函數的結果類似。它看起來像這樣:

Array 
(
    [0] => 2507 
    [1] => Array 
     (
      [0] => 2508 
     ) 

    [2] => 2073 
    [3] => Array 
     (
      [0] => 2397 
     ) 
) 

我可以輕鬆地拼合此,使用PHP 5.3的array_walk_recursive

但是,我寧願我不需要在原來的函數之後調用另一個函數,因爲這似乎是多餘的。

如何從每次調用「創建」數據的遞歸函數創建平面數組?

我試圖截斷我的遞歸函數有點...

function get_children() { 
    $leaf = new array(); 

    $results = database_call(); 
    foreach($results as $res) { 
     $leaf[] = $res; 

     // do tons of stuff not included 
     if($res->children == 1) { 
      $leaf[] = get_children(); 
     } 
    } 
return $leaf; 
} 

$i_wish_this_was_flat = get_children(); 

回答

2

也許你可以使用

$leaf = array_merge($leaf, get_children()); 

,而不是

$leaf[] = get_children(); 
+0

['array_merge']( http://php.net/manual/en/function.array-merge.php)連接['+'](http://www.php.net/manual/en/language.operators.array.php)做聯合 – cske

+0

@cske當然 - 最近並沒有做太多的PHP。改變。 – Howard

+0

噢。真棒!謝謝! –