Combiner les deux tableaux
J'ai deux tableaux comme ceci:
array(
'11' => '11',
'22' => '22',
'33' => '33',
'44' => '44'
);
array(
'44' => '44',
'55' => '55',
'66' => '66',
'77' => '77'
);
Je veux combiner ces deux tableau de telle sorte qu'il ne contient pas de doublons et ainsi que de garder leurs clés originales. Par exemple, la sortie doit être:
array(
'11' => '11',
'22' => '22',
'33' => '33',
'44' => '44',
'55' => '55',
'66' => '66',
'77' => '77'
);
J'ai essayé cela, mais il est en train de changer leur origine clés:
$output = array_unique( array_merge( $array1 , $array2 ) );
Toute solution?
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser:
Qui doit le résoudre. Parce que vous utilisez des clés de chaîne si une clé se produit plus d'une fois (comme
'44'
dans votre exemple) un des principaux écrasera de commencer avec le même nom. Parce que, dans votre cas, ils ont tous deux la même valeur de toute façon il n'a pas d'importance et il va également supprimer les doublons.Mise à jour: je viens de réaliser que PHP traite la chaîne numérique-clés comme des nombres (entiers) et donc va se comporter comme ça, ce qui veut dire qu'il renumérote les touches trop...
Une solution de contournement consiste à recréer les clés.
Mise à jour 2: j'oublie toujours qu'il y a un opérateur (en gras, parce que c'est vraiment ce que vous cherchez! :D)
Tout cela peut être vu dans:
http://php.net/manual/en/function.array-merge.php
$array1 + $array2
est court et efficace solution au lieu dearray_merge() - array_combine()
combinaisonarray_merge()
avec chaîne numérique-les touches avant et j'ai d'abord attendu+
etarray_merge()
se comportent à peu près identique, mais il me semble, j'ai appris quelque chose 🙂$a + $b != array_merge($a, $b)
Vous devriez prendre en considération que
$array1 + $array2 != $array2 + $array1
avec $array1 + $array2
et avec $array2 + $array1
Cela fonctionne:
[1,2,3] + [4,5,6] == [1,2,3]
http_build_query(array_merge($array1, $array2))
ne fonctionne pas pour moi, alors quehttp_build_query($array1 + $array2)
fait.Pour ce faire, vous pouvez faire une boucle par le biais de l'un et de l'annexer à l'autre:
Mise à JOUR: KingCrunch est venu avec le la meilleure solution:
print_r($array1+$array2);
Cela fonctionne:
Avertissement! $array1 + $array2 remplace les clés, donc ma solution (pour les tableaux multidimensionnels) est d'utiliser array_unique()
Avis:
Il fonctionne parfaitement. Espérons que cela aide même.
array_merge()
ne préserve pas les clés du bien. Le tableau créé par que est 0 indexés.+
. Regardez: PHPFiddle , $b[0] sera perdu...