2013-05-28 5 views
8

Y at-il un moyen pour ces tableauxComment fusionner des tableaux multidimensionnels tout en préservant les clés?

$array1 = array(
    '21-24' => array(
     '1' => array("...") 
    ) 
); 

$array2 = array(
    '21-24' => array(
     '7' => array("..."), 
    ) 
); 

$array3 = array(
    '25 and over' => array(
     '1' => array("...") 
    ) 
); 

$array4 = array(
    '25 and over' => array(
     '7' => array("...") 
    ) 
); 

à fusionner qui aboutissent dans le tableau ci-dessous?

array(
    '21-24' => array(
     '1' => array("..."), 
     '7' => array("...") 
    ),  
    '25 and over' => array(
     '1' => array("..."), 
     '7' => array("...") 
    ) 
); 

NOTE:

  • Je n'ai pas le contrôle sur la structure de la matrice de sorte que toute solution qui nécessite de modifier la structure est pas ce que je cherche
  • Je suis principalement intéressé préserver les clés des 2 premiers niveaux mais une solution plus robuste est celle qui peut gérer tous les niveaux.

J'ai essayé d'utiliser array_merge_recursive() comme ça

$x = array_merge_recursive($array1, $array2); 
$x = array_merge_recursive($x, $array3); 
$x = array_merge_recursive($x, $array4); 

mais il a donné lieu à

array(
    '21-24' => array(
     '1' => array("..."), 
     '2' => array("...") 
    ),  
    '25 and over' => array(
     '1' => array("..."), 
     '2' => array("...") 
    ) 
); 
+0

Avez-vous seulement 4 baies? – HamZa

+0

@tessmore Il est déjà dans la question expliquant que je l'ai essayé, mais n'a pas fonctionné comme prévu – arvinsim

+0

@HamZaDzCyberDeV Le code réel sur lequel je travaille varie. Mais ce qui est constant, ce sont les clés du premier et du second niveau. Bien sûr, la meilleure solution ne devrait pas s'en préoccuper du tout. – arvinsim

Répondre

21

Avez-vous envisagé array_replace_recursive()?

print_r(array_replace_recursive($array1, $array2, $array3, $array4)); 
+4

C'est comme si vous connaissiez tout le manuel PHP de votre tête: D – HamZa

+1

@Jack Yep, array_replace_recursive() a fait ce que je voulais faire. – arvinsim

+1

@Jack sauve mon jour ça marche +1 –

Questions connexes