In den folgenden Beispielen werden Standard-Funktionen von PHP gezeigt, um .
Ausgangswerte:
$array1 = [1 => 'one', 2 => 'two', 'foo' => 'bar1']; $array2 = [3 => 'three', 4 => 'four', 6 => 'six', 'foo' => 'bar2'];
Wenn man Arrays mit “+” verbindet, werden die Werte in der Reihenfolge in welcher man diese Verbindet in das neue Array übernommen. Dabei sollte man jedoch beachten, dass gleiche Schlüssel (keys) nicht überschrieben werden.
$array2 + $array1;
—>
array ( [3] => three // array2 [4] => four // array2 [6] => six // array2 [foo] => bar2 // array2 [1] => one // array1 [2] => two // array1 )
Hier ein zweites Beispiel mit ‘+’, nun haben wir die ensprechenden Arrays jedoch umgekehrt, so dass der ‘foo’-Wert vom ersten Array behalten wird.
$array1 + $array2;
—>
array ( [1] => one // array1 [2] => two // array1 [foo] => bar1 // array1 [3] => three // array2 [4] => four // array2 [6] => six // array2 )
Diese kleine “foreach”-Schleife ist ein nachbau der ‘+’-Methode. Auch hier werden neue Werte angefügt, alte Werte jedoch behalten.
$union = $array1; foreach ($array2 as $key => $value) { if (array_key_exists($key, $union) === false) { $union[$key] = $value; } }
—>
array ( [1] => one // array1 [2] => two // array1 [foo] => bar1 // array1 [3] => three // array2 [4] => four // array2 [6] => six // array2 )
Und auch diese “foreach”-Schleife werden die Arrays vertauscht, so dass die Werte von ‘array2’ bestehen bleiben.
$union = $array2; foreach ($array1 as $key => $value) { if (array_key_exists($key, $union) === false) { $union[$key] = $value; } }
—>
array ( [3] => three // array2 [4] => four // array2 [6] => six // array2 [foo] => bar2 // array2 [1] => one // array1 [2] => two // array1 )
Die folgende PHP-Funktion (array_replace()) behält die Reihenfolge von ‘array1’, ersetzt jedoch Schlüssel (keys) welche ebenfalls in ‘array2’ vorkommen mit dessen Werten.
array_replace($array1, $array2);
—>
array ( [1] => one // array1 [2] => two // array1 [foo] => bar2 // array2 (position from array1) [3] => three // array2 [4] => four // array2 [6] => six // array2 )
Hier wird ebenfalls ‘array_replace()’ verwendent, jedoch sind ‘array1’ und ‘array2’ wieder vertauscht und auch hier werden die Schlüssel (keys) beibehalten und die Position von ‘foo’ wird beibehalten.
array_replace($array2, $array1);
—>
array ( [3] => three // array2 [4] => four // array2 [6] => six // array2 [foo] => bar1 // array1 (position from array2) [1] => one // array1 [2] => two // array1 )
Die Funktion ‘array_merge()’ vergibt neue Schlüssel (keys) für indizierte Arrays (0,1,2,3…). Somit fängt das neue Array nun mit dem Schlüssel “0” an.
array_merge($array1, $array2);
—>
array ( [0] => one // array1 (with a new key) [1] => two // array1 (with a new key) [foo] => bar2 // array2 (position from array1) [2] => three // array2 (with a new key) [3] => four // array2 (with a new key) [4] => six // array2 (with a new key) )
Auch hier wurden die Arrays wieder vertauscht und auch hier wurden die numerischen Schlüssel durch neue ersetzt.
array_merge($array2, $array1);
—>
array ( [0] => three // array2 (with a new key) [1] => four // array2 (with a new key) [2] => six // array2 (with a new key) [foo] => bar1 // array1 (position from array2) [3] => one // array1 (with a new key) [4] => two // array1 (with a new key) )
Die PHP-Library “Arrayy” (https://github.com/voku/Arrayy) …
Arrayy::create($array1)->mergePrependKeepIndex($array2);
—>
Arrayy { ["array":protected]=> array(6) { [1]=> one [2]=> two [foo]=> bar2 [3]=> three [4]=> four [6]=> six } }
Arrayy::create($array1)->mergePrependNewIndex($array2);
—>
Arrayy { ["array":protected]=> array(6) { [0]=> three [1]=> four [2]=> six [foo]=> bar1 [3]=> one [4]=> two } }
Links: