2012-03-12 5 views
3

Je souhaite combiner les deux matrices ci-dessous en une seule. Plus précisément, je veux ajouter le contenu du second tableau à la clé correspondante dans le premier tableau. Les clés du tableau final doivent avoir le contenu des clés correspondantes des deux tableaux.Combinaison de deux matrices inégales par correspondance des clés

Array ( 
[123456789_404045862944400] => 192 
[123456789_403274909688162] => 186 
[123456789_402735273075459] => 311 
[123456789_252948031457462] => 385 
[123456789_400606749954978] => 287 
[123456789_286755318061725] => 358 
[123456789_399687880046865] => 257 
[123456789_398332190182434] => 240 
[123456789_397768486905471] => 311 
[123456789_396907650324888] => 293 
[123456789_394850557197264] => 496 
[123456789_394121230603530] => 475 
[123456789_369757766367627] => 488 
[123456789_391602517522068] => 506 
[123456789_390848830930770] => 437 
[123456789_389975351018118] => 452 
[123456789_242486689170043] => 525 
[123456789_388151047867215] => 415 
[123456789_387476447934675] => 502 
[123456789_386620518020268] => 467 
[123456789_215937481836499] => 359 
) 

Array (
[123456789_404045862944400] => 23:52 
[123456789_403274909688162] => 22:21 
[123456789_402735273075459] => 04:29 
[123456789_252948031457462] => 06:22 
[123456789_400606749954978] => 05:01 
[123456789_286755318061725] => 04:51 
[123456789_399687880046865] => 21:51 
[123456789_398395260176127] => 01:13 
[123456789_398332190182434] => 23:19 
[123456789_397768486905471] => 05:38 
[123456789_397509266931393] => 00:46 
[123456789_396907650324888] => 03:38 
[123456789_394850557197264] => 05:12 
[123456789_394121230603530] => 04:15 
[123456789_369757766367627] => 04:01 
[123456789_391602517522068] => 03:44 
[123456789_390848830930770] => 06:05 
[123456789_389975351018118] => 04:00 
[123456789_242486689170043] => 04:13 
[123456789_388151047867215] => 00:22 
[123456789_387544787927841] => 07:34 
[123456789_387476447934675] => 04:51 
[123456789_386620518020268] => 06:05 
[123456789_386504878031832] => 02:38 
[123456789_215937481836499] => 01:10 
) 

Ce que j'ai essayé jusqu'à présent:

$array1 = array_merge($array1, $array2); 

aussi essayé quelque chose comme:

foreach($arr2 as $k=>$v) { 
    $a[$k] = $arr1[$k]; 
} 

Mais il ne se combine pas/fusionner les tableaux être correctement clés correspondantes.

Je l'ai également essayé avec array_combine mais comme il crée un tableau en utilisant un tableau pour les clés et un autre pour ses valeurs, je ne pouvais pas non plus que cela fonctionne.

+0

pouvez-vous s'il vous plaît fournir tableau tableau de sortie ici? –

+0

quelles sont les conditions? il semble que vous travaillez à l'heure ici. que se passe-t-il si j'ajoute et qu'il dépasse 23: 59? les deux tableaux sont-ils toujours égaux ou y a-t-il une chance qu'un tableau ait plus d'éléments que l'autre? les deux tableaux contiennent-ils les mêmes éléments, ou peut-il y avoir un élément qui est dans un tableau et pas l'autre? – Joseph

+0

Salut @Teez, array_merge génère un tableau qui est une combinaison simple des deux. L'approche foreach produit un tableau avec des valeurs vides et aucune valeur de arr1. array_combine donne l'erreur "Les deux paramètres doivent avoir un nombre égal d'éléments dans ...". –

Répondre

6

D'accord, j'ai donc deux tableaux de données et un vide pour maintenir le nouveau tableau

$array1 = array('key1'=>'value1'); 
$array2 = array('key2'=>'value2'); 
$array3 = array(); 

les combiner en fonction de clé

foreach($array1 as $k=>$v) 
{ 
    if(array_key_exists($k, $array2)) 
    { 
     $array3[$k] = array($v, $array2[$k]); 
    } 
} 

array3 $ détient le nouveau tableau. Si vous souhaitez remplacer le tableau original il suffit d'ajouter

$array1 = $array3; 

Et si vous souhaitez pour array3 pour maintenir les cellules qui array2 na pas avoir et tableau 1 ne sont alors ajouter un autre à l'intérieur du foreach

else 
{ 
    $array3[$k] = array($v, null); 
} 

Ceci permet de faire en sorte que la matrice soit de forme uniforme lorsque vous la traversez. Cela va parcourir chaque élément de array1, vérifier le tableau 2 pour chaque clé dans le tableau 1, s'il existe, ajouter un nouveau tableau à cette clé contenant les données du tableau précédent pour cette clé.

+0

Salut @Jake, merci pour votre réponse. Je l'ai eu pour travailler. Merci un million! –

+0

Je suis heureux d'avoir pu aider. – Jake

+0

Merci, je suis juste tombé sur ceci et l'ai un peu ajusté pour mon but, mais votre explication m'a fait passer une grosse bosse dans le projet sur lequel je travaille. Merci! – kjones