PHP merge_array()

PHP bringt bis einschließlich Version 5.3 sage und schreibe 77 dokumentierte Array-Funktionen mit und mit keiner lässt sich diese einfache Operation durchführen:

Verschmelze (merge) zwei Arrays
Nehme das erste Array ($array_1) als Ziel (zu ergänzendes Array)
Nehme das zweite Array ($array_2) als Quelle (ergänzendes Array)

Wobei kein komplettes Ersetzen eines Keys erfolgen soll, bei Vorhandensein doppelter Keys sollen die Werte aus dem zweiten Array ($array_2) in das erste überführt werden.
Neue Inhalte (Keys) sollen aus dem zweiten Array in das erste überführt werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function merge_array(array $array_1, array $array_2)
{
// iterate over array which overwrites/supplements array_1
foreach ($array_2 as $key => $value) {
// check if element is an array or a value
if (is_array($array_2[$key])) {
if (!isset($array_1[$key])) {
// if key does not exist - just set it
$array_1[$key] = $array_2[$key];
} else {
// if key allready exist - start recursion
$array_1[$key] = merge_array($array_1[$key], $array_2[$key]);
}
} else {
// values could be stored directly
$array_1[$key] = $array_2[$key];
}
}
// return the new merged array
return $array_1;
}

Das war der erste Schuss. Aber die Frage bleibt, warum fehlt so etwas? Ich kann doch nicht der erste sein, der diese Funktionalität braucht…

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someone

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.