Ich möchte diese beiden Arrays so kombinieren, dass sie keine Duplikate enthalten und ihre ursprünglichen Schlüssel behalten. Ausgabe sollte beispielsweise sein:
Das sollte es lösen. Da Sie Zeichenfolgenschlüssel verwenden, wenn ein Schlüssel mehr als einmal vorkommt (z '44' in Ihrem Beispiel) überschreibt ein Schlüssel vorhergehende mit demselben Namen. Da in Ihrem Fall beide den gleichen Wert haben, spielt es keine Rolle, und es werden auch Duplikate entfernt.
Update: Mir ist gerade aufgefallen, dass PHP die numerischen String-Keys als Zahlen (Ganzzahlen) behandelt und sich so verhält, was bedeutet, dass es auch die Keys neu nummeriert …
Eine Problemumgehung besteht darin, die Schlüssel neu zu erstellen.
$output = array_combine($output, $output);
Update 2: Ich vergesse immer, dass es auch einen Operator gibt (fett gedruckt, weil das so ist Wirklich Wonach suchen Sie! :D)
@KingCrunch – Auch wenn die Zahlen zitiert werden, sind das so nicht String-Schlüssel und so wird der Index nicht bewahrt werden. Beispiel: ideone.com/I2NFT
– Brendan Bullen
30. Juni 2011 um 13:29 Uhr
Wirklich… Zuerst wollte ich von “einem Bug” sprechen, aber dann ist mir aufgefallen, dass im Handbuch nur von “Zahlentasten” und nicht von “Integer-Tasten” die Rede ist. Fühlt sich etwas verwirrend an.
– KingCrunch
30. Juni 2011 um 13:32 Uhr
So $array1 + $array2 findet eine kurze und effiziente Lösung statt array_merge() - array_combine() Kombination
– Awan
30. Juni 2011 um 13:54 Uhr
Offensichtlich ist es das. Ich habe nie das Verhalten von erkannt array_merge() mit numerischen String-Keys vorher und zuerst habe ich gerechnet + Und array_merge() verhalten sich fast identisch, aber es scheint, ich habe etwas gelernt 🙂
– KingCrunch
30. Juni 2011 um 14:01 Uhr
WARNUNG! für nicht zugeordnete Arrays oder wenn Arrays gemeinsame Schlüssel haben $a + $b != array_merge($a, $b)
– jmarceli
8. Mai 2018 um 15:21 Uhr
Das sollten Sie berücksichtigen $array1 + $array2 != $array2 + $array1
Ich würde dies nicht empfehlen, da das Verhalten sehr unintuitiv ist, z [1,2,3] + [4,5,6] == [1,2,3]
– jchook
14. Oktober 2016 um 23:56 Uhr
@jchook Was empfehlen Sie dann?
– Michas
15. Oktober 2016 um 0:03 Uhr
Das ist, was ich brauchte, danke. Hier ist der Grund: http_build_query(array_merge($array1, $array2)) hat bei mir nicht funktioniert, während http_build_query($array1 + $array2) tat.
– Barri
6. Februar 2017 um 16:20 Uhr
Die neue Art, es zu tun php7.4 ist Spread-Operator […]
Der Spread-Operator sollte eine bessere Leistung haben als array_merge
Ein wesentlicher Vorteil des Spread-Operators besteht darin, dass er alle passierbaren Objekte unterstützt, während die Funktion array_merge nur Arrays unterstützt.
Brendan Bullen
Dazu können Sie eine Schleife durchlaufen und an die andere anhängen:
array_merge() speichert die Schlüssel jedoch nicht. Das dadurch erstellte Array ist 0 indiziert.
– Durchbohren
21. November 2017 um 12:20 Uhr
@HPierce Nun, im Fall der Addition mehrdimensionaler Arrays gehen einige Informationen verloren +. Schauen Sie sich an: PHPFiddle $b[0] wird verloren sein…
– Norman Edance
22. November 2017 um 6:00 Uhr
14494200cookie-checkFühren Sie zwei assoziative Arrays mit numerischen Schlüsseln zusammen und behalten Sie die ursprünglichen Schlüssel beiyes