2010-01-29 6 views
1

J'ai une liste de tableaux (quantité inconnue), j'ai besoin de les fusionner récursivement.PHP: Attention: array_merge_recursive(): récursivité détectée

Alors ce que je faisais ce que créer un tableau de tous les tableaux et les passer dans cette fonction:

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; 
} 

La plupart du temps, cela fonctionne exactement comme je m'y attendais, mais parfois je reçois cette erreur :

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

Ne sait pas pourquoi?

Des idées?

Merci!

MISE À JOUR

la structure est comme ceci:

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

Ce que je puis changé pour:

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

et qui fixe la question :)

Notez tous ceux qui peuvent expliquer pourquoi mon changement l'a résolu, obtiendra la réponse acceptée!

+0

De @PvB -. « Sans avoir les infos sur les tableaux que vous mettez dans la fonction, il est très difficile de dégager les choses Pouvez-vous fournir des exemples de cas entraînant un avertissement ou décrivez la structure de vos tableaux "internes". " – bish

Répondre

1

Sur la possibilité est qu'un tableau faisait référence à un autre.

Exemple simple

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

Il en résulte une récursion.

Je ne sais juste pas ce que la conception causerait que cela se produise ...

Questions connexes