2012-10-28 115 views
0

我有一個示例只顯示我不知道該怎麼做。當你調用該函數時,它返回1個果實,或者如果它滾動5,那麼我希望水果增加1次每個結果它滾動並返回一個數組,可能會進入像20這樣的最大遞歸,如果說得通! :)使用遞歸遞增數組值

function fruitBasket(&$fruit = array()) { 
    $dice = rand(1, 5); 
    switch($dice) { 
     case 1: 
      $fruit['watermelon'] = ++$watermelon; 
     break; 
     case 2: 
      $fruit['orange'] = ++$orange; 
     break; 
     // etc... 
     case 5: 
      for($i = 1; $i <= rand(1, 5); $i++) { 
       fruitBasket($fruit); 
      } 
     break; 
    } 
    return $fruit; 
} 
+0

而問題是...... – zerkms

+0

哦,等等,它應該是在標題? –

+0

你已經寫過,不是嗎? – zerkms

回答

0

我不知道我理解你的問題正是因爲你的描述是一種混亂的狀態,我無法添加註釋,但是從我明白:

function fruitBasket(&$fruit = array(), $dice = 0, $depth = 1) { 

    if($depth == 20) 
    return $fruit; 

    $dice = ($dice > 0 ? $dice : rand(1, 5)); 

    switch($dice) { 
     case 1: 
      $fruit['watermelon'] += 1; 
     break; 
     case 2: 
      $fruit['orange'] += 1; 
     break; 
     // etc... 
     case 5: 
     $depth += 1; 

      for($i = 1; $i <= rand(1, 5); $i++) { 
       fruitBasket($fruit, $i, $depth); 
      } 
     break; 
    } 
    return $fruit; 
}