J'ai deux tableaux :
$array1 = array('a' => 1, 'b' => 2, 'c' => 3); $array2 = array('d' => 4, 'e' => 5, 'f' => 6, 'a' => 'new value', '123' => 456);
Je souhaite les fusionner et conserver les clés et l'ordre au lieu de les réindexer ! !
Comment est-ce devenu comme ça ?
Array ( [a] => new value [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [123] => 456 )
J'ai essayé array_merge() mais il ne préserve pas les clés :
print_r(array_merge($array1, $array2)); Array ( [a] => 'new value' [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [0] => 456 )
J'ai essayé d'utiliser l'opérateur union mais il n'écrase pas l'élément :
print_r($array1 + $array2); Array ( [a] => 1 <-- not overwriting [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [123] => 456 )
J'ai essayé d'échanger mes places, mais c'était dans le mauvais ordre, ce n'était pas ce dont j'avais besoin :
print_r($array2 + $array1); Array ( [d] => 4 [e] => 5 [f] => 6 [a] => new value [123] => 456 [b] => 2 [c] => 3 )
Je ne veux pas utiliser de boucle, existe-t-il un moyen d'obtenir des performances élevées ?
Supposons que nous ayons 3 tableaux comme indiqué ci-dessous.
Maintenant, si vous souhaitez fusionner tous ces tableaux et que le tableau final contienne toutes les données du tableau sous les clés 0 en 0 et 1 en 1 et ainsi de suite.
Ensuite, vous devez utiliser la fonction PHP array_replace_recursive comme suit.
Les résultats sont les suivants.
J'espère que les solutions ci-dessus répondront le mieux à vos besoins ! !
Vous recherchez
array_replace()
:Disponible depuis PHP 5.3.
Mise à jour
Vous pouvez également utiliser l'opérateur union array ; il fonctionne sur les anciennes versions et peut également être plus rapide :