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.

[cc lang=”php” tab_size=”2″ lines=”40″]
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;
}
[/cc]

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…