Sowohl der „+“-Operator als auch array_merge():array array_merge (array array1, array array2 [, array ...]) können mehrere Arrays zusammenführen, es gibt jedoch einen kleinen Unterschied im Verwendungsprozess.
array_merge wird im Referenzhandbuch wie folgt beschrieben:
array_merge() führt die Zellen von zwei oder mehr Arrays zusammen, wobei die Werte in einem Array an das vorherige Array angehängt werden. Gibt das resultierende Array zurück.
Wenn das Eingabearray denselben Zeichenfolgenschlüsselnamen hat, überschreibt der Wert nach dem Schlüsselnamen den vorherigen Wert. Wenn das Array jedoch numerische Schlüssel enthält, überschreiben die nachfolgenden Werte nicht die ursprünglichen Werte, sondern werden an diese angehängt.
Der Unterschied zwischen den beiden ist:
1. Wenn der Array-Schlüsselname ein numerischer Schlüsselname ist und in den beiden zusammenzuführenden Arrays numerische SCHLÜSSEL mit demselben Namen vorhanden sind, überschreibt die Verwendung von array_merge() den ursprünglichen Wert nicht, während die Arrays mit „+“ zusammengeführt werden Der Wert wird als Endergebnis zurückgegeben und die Werte in den nachfolgenden Arrays mit demselben Schlüsselnamen werden „verworfen“ (Hinweis: Der zuerst angezeigte Wert wird nicht überschrieben, sondern beibehalten). Beispiel:
$array1 = array(1=>'0');
$array2 = array(1=> "data");
$result1 = $array2 + $array1;/*Das Ergebnis ist der Wert von $array2*/
print_r($result);
$result = $array1 + $array2 ;/*Das Ergebnis ist der Wert von $array1*/
print_r($result);
$result3 = array_merge($array2,$array1);/*Das Ergebnis ist der Wert von $array2 und $array1, und der Schlüsselname wird neu zugewiesen*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*Das Ergebnis ist der Wert von $array1 und $array2, und der Schlüsselname wird neu zugewiesen*/
print_r($result4);
Das Ausgabeergebnis ist:
Array ( [1] => Daten )
Array ( [1] => 0 )
Array (
[0] => Daten
[1] => 0
)
Array
(
[0] => 0
[1] => Daten
)
2. Wenn derselbe Array-Schlüsselname ein Zeichen ist, ist der „+“-Operator derselbe wie wenn der Schlüsselname eine Zahl ist, aber array_merge() überschreibt den vorherigen Wert desselben Schlüsselnamens.
Beispiel:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "data");
$result1 = $array2 + $array1;/*Das Ergebnis ist der Wert von $array2*/
print_r($result);
$result = $array1 + $array2 ;/*Das Ergebnis ist der Wert von $array1*/
print_r($result);
$result3 = array_merge($array2,$array1);/*Das Ergebnis ist $array1*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*Das Ergebnis ist $array2*/
print_r($result4);
Das Ausgabeergebnis ist:
Array ([asd] => data)
Array ( [asd] => 0 )
Array ( [asd] => 0 )
Array ( [asd] => Daten )