Ich habe zwei Arrays wie dieses:
array(
'11' => '11',
'22' => '22',
'33' => '33',
'44' => '44'
);
array(
'44' => '44',
'55' => '55',
'66' => '66',
'77' => '77'
);
Ich möchte diese beiden Arrays so kombinieren, dass sie keine Duplikate enthalten, und ihre ursprünglichen Schlüssel behalten. Zum Beispiel sollte die Ausgabe sein:
array(
'11' => '11',
'22' => '22',
'33' => '33',
'44' => '44',
'55' => '55',
'66' => '66',
'77' => '77'
);
Ich habe es versucht, aber es ändert ihre ursprünglichen Schlüssel:
$output = array_unique( array_merge( $array1 , $array2 ) );
Irgendeine Lösung?
$array1 + $array2
ist kurze und effiziente Lösung stattarray_merge() - array_combine()
Kombination$a + $b != array_merge($a, $b)
Sie sollten dies berücksichtigen
$array1 + $array2 != $array2 + $array1
mit $ array1 + $ array2
und mit $ array2 + $ array1
quelle
Das funktioniert:
quelle
[1,2,3] + [4,5,6] == [1,2,3]
http_build_query(array_merge($array1, $array2))
hat bei mir nicht funktioniert, wohingegenhttp_build_query($array1 + $array2)
.Dazu können Sie eine Schleife durchlaufen und an die andere anhängen:
UPDATE: KingCrunch hat die beste Lösung gefunden :
print_r($array1+$array2);
quelle
Wenn Sie PHP 7.4 oder höher verwenden, können Sie den Spread-Operator
...
als folgende Beispiele aus den PHP-Dokumenten verwenden:Es funktioniert wie in JavaScript ES6.
Weitere Informationen finden Sie unter https://wiki.php.net/rfc/spread_operator_for_array .
quelle
$array1 + $array2
$ouput = $array1 + $array2
. Jetzt habe ich etwas Neues gelernt! Danke dir!Das funktioniert:
quelle
Warnung! $ array1 + $ array2 überschreibt Schlüssel, daher besteht meine Lösung (für mehrdimensionale Arrays) darin, array_unique () zu verwenden.
Beachten:
Es funktioniert perfekt . Hoffe es hilft gleich.
quelle
array_merge()
Die Schlüssel bleiben jedoch nicht erhalten. Das dadurch erstellte Array ist 0 indiziert.+
. Schauen Sie sich an: PHPFiddle , $ b [0] geht verloren ...Die neue Methode mit php7.4 ist der Spread-Operator [...]
Der Spread-Operator sollte eine bessere Leistung haben als
array_merge
Ein wesentlicher Vorteil des Spread-Operators besteht darin, dass er alle durchlaufbaren Objekte unterstützt, während die Funktion array_merge nur Arrays unterstützt.
quelle
https://www.php.net/manual/en/function.array-merge.php
quelle