Comment puis-je fusionner deux tableaux (un avec chaîne => paires de valeurs et un autre avec int => paires de valeurs) tout en conservant les clés chaîne / int? Aucun d'entre eux ne se chevauchera jamais (car l'un n'a que des chaînes et l'autre n'a que des entiers).
Voici mon code actuel (qui ne fonctionne pas, car array_merge ré-indexe le tableau avec des clés entières):
// get all id vars by combining the static and dynamic
$staticIdentifications = array(
Users::userID => "USERID",
Users::username => "USERNAME"
);
// get the dynamic vars, formatted: varID => varName
$companyVarIdentifications = CompanyVars::getIdentificationVarsFriendly($_SESSION['companyID']);
// merge the static and dynamic vars (*** BUT KEEP THE INT INDICES ***)
$idVars = array_merge($staticIdentifications, $companyVarIdentifications);
php
arrays
array-merge
Garrett
la source
la source
array( 123 => "VALUE123" )
àarray( 0 => "VALUE123" )
assert(array(0=>0,1=>1) === array_merge(array('9'=>0), array('9'=>1)))
Réponses:
Vous pouvez simplement «ajouter» les tableaux:
la source
print_r([2 => 56] + [2 => 30]);
cèdeArray ( [2] => 56 )
. Donc, il garde le côté gauche comme spécifié. Ceci est PHP 7.1.19, en cours d' exécution sur repl.it .Considérant que vous avez
Faire
$merge = $replacement + $replaced;
produira:Le premier tableau de sum aura des valeurs dans la sortie finale.
Faire
$merge = $replaced + $replacement;
produira:la source
$allValues += $newValues;
.$merge = $replacement + $replaced;
produira:Array ( [4] => value2 [6] => value3 [1] => value1 )
Bien que cette question soit assez ancienne, je veux simplement ajouter une autre possibilité de fusionner tout en conservant les clés.
En plus d'ajouter des clés / valeurs aux tableaux existants en utilisant le
+
signe que vous pourriez fairearray_replace
.Le résultat sera:
Les mêmes clés seront écrasées par ce dernier tableau.
Il existe également un
array_replace_recursive
, qui le fait également pour les sous-réseaux.Exemple en direct sur 3v4l.org
la source
Deux tableaux peuvent être facilement ajoutés ou réunis sans modifier leur indexation d'origine par l' opérateur + . Ce sera très utile dans laravel et la liste déroulante de sélection de codeigniter.
La sortie sera:
la source
Essayez les fonctions array_replace_recursive ou array_replace
http://php.net/manual/en/function.array-replace-recursive.php
la source