2016-06-29 14 views
-2

Ich habe zwei multidimensionale Arrays in php und möchte sie zusammenführen.php multidimensionale Arrays ineinander verschmelzen

erste:

array1 = (
    0 => array (
     0 => array(
      id => 1, 
      name => "test" 
     ) 
    ) 
    1 => array(...) 
) 

Zweite ein:

array2 = (
    0 => array (
     0 => array(
      id => 200, 
      name => "test" 
     ), 
     1 => array(
      id => 201, 
      name => "test" 
     ) 
    ) 
    1 => array(...) 
) 

Und die fusionierte Array muss so aussehen:

lastArray = (
    0 => array (
     0 => array(
      id =>1, 
      name => "test" 
     ), 
     1 => array(
      id => 200, 
      name => "test" 
     ), 
     2 => array (
      id => 201, 
      name => "test" 
     ) 
    ) 
    1 => array(...) 
) 

Wie soll ich das mit einer richtigen foreach Schleife machen?

Antwort

1

Methode 1:

Warum nicht array_merge oder array-merge-recursive für diesen Einsatz? Dies wird verschmelzen die beiden (oder mehr) Arrays.

$array = array_merge($array1, $array2); 

$array = array_merge-recursive($array1, $array2); 

Methode 2:

Schleife durch ein Array. (Sie können überprüfen, ob der Schlüssel dem anderen Array-Schlüssel entspricht).

Vielleicht so etwas wie:

foreach($array_1 as $key=>$value) $array_2[$key] = $value; 

Erinnerung von splash58: nicht usort in beiden Methoden zu sortieren das Array von Werten nach Art von ID

+0

Nein! Das ist nicht so einfach. achte mehr auf "lastArray", das ich erwähnt habe. Ich möchte es nicht bis zum Ende des ersten Arrays schieben! –

+0

Nach Sortierung nach ID mit Usort-Funktion - http://php.net/manual/en/function.usort.php – splash58

+0

@ splash58 ja, verpasste diesen Punkt! – Maurize

1

Nach verwenden Vergessen die lastArray, die Sie präsentiert haben - Sie müssen die inneren Arrays nur bei 0 Position/Index zusammenführen (und Sie haben nicht angezeigt, wie ein Ergebnis der Zusammenführung bei 1 Index aussehen sollte).
Verwenden Sie den folgenden Ansatz:

$array1[0] = array_merge($array1[0], $array2[0]); 
// now, $array1 is your $lastArray