Wie kann ich zwei Arrays zusammenführen (eines mit Zeichenfolge => Wertepaaren und eines mit int => Wertepaaren), während die Zeichenfolgen / int-Schlüssel beibehalten werden? Keiner von ihnen wird sich jemals überlappen (weil einer nur Zeichenfolgen und der andere nur Ganzzahlen hat).
Hier ist mein aktueller Code (der nicht funktioniert, da array_merge das Array mit Ganzzahlschlüsseln neu indiziert):
// 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
quelle
quelle
array( 123 => "VALUE123" )
zuarray( 0 => "VALUE123" )
assert(array(0=>0,1=>1) === array_merge(array('9'=>0), array('9'=>1)))
Antworten:
Sie können die Arrays einfach 'hinzufügen':
quelle
print_r([2 => 56] + [2 => 30]);
BetriebserträgeArray ( [2] => 56 )
. Die linke Seite bleibt also wie angegeben. Dies ist ab PHP 7.1.19, das auf repl.it ausgeführt wird .In Anbetracht dessen, dass Sie haben
Dabei wird Folgendes
$merge = $replacement + $replaced;
ausgegeben:Das erste Array aus sum hat Werte in der endgültigen Ausgabe.
Dabei wird Folgendes
$merge = $replaced + $replacement;
ausgegeben:quelle
$allValues += $newValues;
.$merge = $replacement + $replaced;
wird ausgegeben:Array ( [4] => value2 [6] => value3 [1] => value1 )
Obwohl diese Frage ziemlich alt ist, möchte ich nur eine weitere Möglichkeit hinzufügen, eine Zusammenführung unter Beibehaltung der Schlüssel durchzuführen.
Neben dem Hinzufügen von Schlüsseln / Werten zu vorhandenen Arrays mithilfe des
+
Zeichens können Sie einearray_replace
.Das Ergebnis wird sein:
Dieselben Schlüssel werden vom letzteren Array überschrieben.
Es gibt auch eine
array_replace_recursive
, die dies auch für Subarrays tut.Live-Beispiel auf 3v4l.org
quelle
Zwei Arrays können einfach hinzugefügt oder vereinigt werden, ohne dass die ursprüngliche Indizierung durch den Operator + geändert wird . Dies ist sehr hilfreich bei der Auswahl von Dropdown-Listen für Laravel und Codeigniter.
Ausgabe wird sein:
quelle
Probieren Sie die Funktionen array_replace_recursive oder array_replace aus
http://php.net/manual/en/function.array-replace-recursive.php
quelle