• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Array in Array 'integrieren'

scbawik

Senior HTML'ler
Hallo zusammen!

Nach etlichen erfolglosen Versuchen, hoffe ich doch jemand hier hat eine Lösung für mich.

Ich habe folgendes Array (in abgespeckter Form, ein Prototyp eines HTML-Buttons):

PHP:
$arr1 = array(
     'button' => array (
            'label' => 'EMPTY',
            'onclick' => 'void(0);',
            'position' => array (
                   'top' => 0,
                   'left' => 0                   
            )
      )
)

Jetzt erstelle ich ein neues Array:

PHP:
$arr2 = array(
     'button' => array (
            'label' => 'Speichern',
            'onclick' => 'save();'
      )
)

Folgendes möchte ich jetzt machen:

PHP:
$result = integriereArrayInArray($arr1,$arr2);

// $result sollte nun so aussehen:

$result = array(
     'button' => array (
            'label' => 'Speichern',
            'onclick' => 'save();',
            'position' => array (
                   'top' => 0,
                   'left' => 0                   
            )
      )
)

Nochmal zusammengefasst:

$arr1 ist ein Array mit Default-Werten.
$arr2 ist ein Array, in welchen nur die Keys/Values angegeben sind, die vom Default abweichen.

$arr2 soll nun in $arr1 integriert werden, ohne das dabei unveränderte Default-Werte verloren gehen.

Habe es mit array_merge bzw array_merge_recursive versucht, hat aber nicht ganz funktioniert.


Freue mich auf jede Antwort!!
 
Danke für die Antworten!

array_splice() hilft mir jetzt nicht direkt weiter.

array_merge_recursive() habe ich schon versucht, macht auch fast genau das was ich möchte, aber leider nur fast :(

Das Ergebnis mit array_merge_recursive():

PHP:
$result = array_merge_recursive($arr1,$arr2);

$result = array(
     'button' => array (
            'label' => array(
                   0 => 'EMPTY',
                   1 => 'Speichern'
            ),
            'onclick' => array(
                   0 => 'void(0);',
                   1 => 'click();'
            ),
            'position' => array (
                   'top' => 0,
                   'left' => 0                   
            )
      )
)

Statt die Werte zu überschreiben bildet die Funktion also ein Array in dem es beide Werte behält.

Ich werde mal versuchen ob ich mit array_map() zum Ziel komme, oder mir eine eigene Funktion zurecht basteln!

Falls nicht, melde ich mich wieder :)

EDIT: Hätte ich mir doch die Comments zu array_merge_recursive() angesehen - sieht vielversprechend aus!
 
Zurück
Oben