2010-01-29 60 views
1

我有一個數組列表(未知量),我需要將它們全部遞歸合併。PHP:警告:array_merge_recursive():檢測到遞歸

所以我做了什麼創建所有這些數組的數組,並將它們傳遞到這個函數:

function mergeMonth($array) 
{ 
    foreach($array as $date_string => $inner_array) 
    { 
     if(isset($temp_inner_array)) 
     { 
      $temp_inner_array = array_merge_recursive($temp_inner_array,$inner_array); 
     } 
     else 
     { 
      $temp_inner_array = $inner_array; 
     } 
    } 

    return $temp_inner_array; 
} 

這其中大部分作品就像我預期,但有時我得到這個錯誤的時間:

Warning: array_merge_recursive(): recursion detected in ... on line 89

不知道爲什麼?

任何想法?

謝謝!

UPDATE

的結構是這樣的:

Array 
(
    [sales] => 301.5 
    [cost] => 
    [repairs] => 0 
    [esps] => 0 
    [margin] => 301.5 
    [verified] => unverified 
) 

然後我改成:

Array 
(
    [sales] => 301.5 
    [cost] => 0 
    [repairs] => 0 
    [esps] => 0 
    [margin] => 301.5 
    [verified] => unverified 
) 

和固定的問題:)

注人誰可以解釋爲什麼我的改變修復了它,會得到接受的答案!

+0

從@PvB - 「沒有有關於你把它是相當難以清除的東西了功能的陣列的相關信息你能提供引發警告的情況示例?或描述「內部」數組的結構。「 – bish 2010-01-29 16:06:11

回答

1

可能性是一個數組引用另一個數組。

簡單實例

 $a = array 
     (
      'cost' => null, 
     ); 
     $b = array 
     (
      'cost' => &$a['cost'], // appears as "[cost] => " 
            // because $a['cost'] is null 
     ); 

這導致遞歸。

我只是不知道什麼設計會導致這樣的事情發生......