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: