2012-01-15 80 views
0

我有這個遞歸函數,我必須使用一個數組來存儲和驗證使用過的數據,意思是說,在一個字符串被使用後,我想記住它已被使用,所以我不會在下一次迭代中再次檢查該字符串。 問題出在第一次迭代之後,數組被認爲是NULL。在遞歸函數中的數組

所以我的問題是這樣的:我如何傳遞數組遞歸函數?或者我如何在遞歸函數中使用數組?

我在這裏看了這個,雖然有很多類似的問題沒有回答我的問題。

注:我明白,任何可以用遞歸完成的事情都可以用循環完成...但是...這是函數。就像我在第二次迭代中提到的陣列被認爲是NULL,我得到這樣的警告:

array_push()預計參數1是陣列,在...

這裏空給出的邏輯功能:

// Set Vars... 
$Str = 'someData'; 
$S_Array = array(); 

// initial call... 
GetData($Str, $S_Array); 

function GetData ($string, $array) 
{ 
    // string manipulations code... 

    . 
    . 
    . 
    . 
    // Attempt to Store in array 

    array_push($array, $string); 
    foreach ($array as $val) { 
     // Recursive Call... 

     GetData($val, $array); 
    } 
} 
+0

能夠實現,是它只是你已經通過$ ARRY而不是$數組中的遞歸調用錯誤? – ivanjovanovic 2012-01-15 14:46:36

+0

這是「提前致謝」。沒有尾隨「d」。 – 2012-01-15 14:51:52

回答

0

您正在使用array_push錯誤 - 參數的順序已切換。而且也確實沒有必要使用array_push可言,因爲相同的結果可以用

$array[] = $string; 
+0

@ivanjovanovic 對於語法錯誤感到抱歉,它們是誤導性的。我剛剛編輯我的代碼...再次看看peals在更新的代碼.. – RmH 2012-01-15 14:52:05

+0

這只是一個錯字,在我的完整代碼中這是正確放置,我也更新了這篇文章,所以如果你可以請一看再次,我會很滿。 – RmH 2012-01-15 15:03:46