PHP workshop for 2 days with Shopware, Sylius, PHPUnit and Codeception in Duisburg

array_merge

(PHP 4, PHP 5, PHP 7, PHP 8)

array_mergeFührt zwei oder mehr Arrays zusammen

Beschreibung

array_merge(array ...$arrays): array

Fügt die Elemente von zwei oder mehr Arrays zusammen, indem die Werte des einen an das Ende des vorherigen angehängt werden. Das daraus resultierende Array wird zurückgegeben.

Haben die angegebenen Arrays dieselben alphanumerischen Schlüssel, dann überschreibt der spätere Wert den vorhergehenden. Falls die Arrays aber numerische Schlüssel enthalten, überschreibt der spätere Wert den ursprünglichen Wert nicht und wird stattdessen angehängt.

Werte in den Eingangsarrays mit numerischen Schlüsseln werden im resultierenden Array mit aufsteigenden Schlüsseln, die bei Null beginnen, neu nummeriert.

Parameter-Liste

arrays

Variable Liste von zusammenzufügenden Arrays.

Rückgabewerte

Gibt das resultierende Array zurück. Bei Aufruf ohne Argument wird ein leeres Array zurückgegeben.

Changelog

Version Beschreibung
7.4.0 Diese Funktion kann nun ohne Parameter aufgerufen werden. Zuvor war mindestens ein Parameter erforderlich.

Beispiele

Beispiel #1 array_merge()-Beispiel

<?php
$array1 
= array("farbe" => "rot"24);
$array2 = array("a""b""farbe" => "grün""form" => "trapezoid"4);
$ergebnis array_merge($array1$array2);
print_r($ergebnis);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
    [farbe] => grün
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [form] => trapezoid
    [4] => 4
)

Beispiel #2 Ein einfaches array_merge()-Beispiel

<?php
$array1 
= array();
$array2 = array(=> "daten");
$ergebnis array_merge($array1$array2);
?>

Vergessen Sie nicht, dass numerische Schlüssel neu nummeriert werden!

Array
(
    [0] => daten
)

Falls Array-Elemente des zweiten Arrays an das erste Array angehängt werden sollen, ohne dass Elemente des ersten Arrays überschrieben werden und neu indexiert wird, kann der Vereinigungs-Operator + verwendet werden:

<?php
$array1 
= array(=> 'null_a'=> 'zwei_a'=> 'drei_a');
$array2 = array(=> 'eins_b'=> 'drei_b'=> 'vier_b');
$ergebnis $array1 $array2;
var_dump($ergebnis);
?>

Die Schlüssel des ersten Arrays werden beibehalten. Falls ein Schlüssel in beiden Arrays vorkommt, wird das Element des ersten Arrays verwendet und das entsprechende Element des zweiten Arrays ignoriert.

array(5) {
  [0]=>
  string(6) "null_a"
  [2]=>
  string(5) "zwei_a"
  [3]=>
  string(7) "drei_a"
  [1]=>
  string(5) "eins_b"
  [4]=>
  string(6) "vier_b"
}

Beispiel #3 array_merge() mit nicht-Array-Typen

<?php
$anfang 
'foo';
$ende = array(=> 'bar');
$ergebnis array_merge((array)$anfang, (array)$ende);
print_r($ergebnis);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Array
    (
        [0] => foo
        [1] => bar
    )

Siehe auch

add a note add a note

User Contributed Notes 2 notes

up
264
Julian Egelstaff
12 years ago
In some situations, the union operator ( + ) might be more useful to you than array_merge.  The array_merge function does not preserve numeric key values.  If you need to preserve the numeric keys, then using + will do that.

ie:

<?php

$array1
[0] = "zero";
$array1[1] = "one";

$array2[1] = "one";
$array2[2] = "two";
$array2[3] = "three";

$array3 = $array1 + $array2;

//This will result in::

$array3 = array(0=>"zero", 1=>"one", 2=>"two", 3=>"three");

?>

Note the implicit "array_unique" that gets applied as well.  In some situations where your numeric keys matter, this behaviour could be useful, and better than array_merge.

--Julian
up
5
fsb at thefsb dot org
1 year ago
We no longer need array_merge() as of PHP 7.4.

    [...$a, ...$b]

does the same as

    array_merge($a, $b)

and can be faster too.

https://wiki.php.net/rfc/spread_operator_for_array#advantages_over_array_merge
To Top