2016-08-08 14 views
0

Ich brauche zwei „dreidimensionale“ Arrays zu verbinden, aber mein Problem ist, dass, wenn die erste der Arrays Tasten die gleiche wie die anderen, nur das Ergebnis ist ... nicht wünschenswert.Der Versuch, zwei mehrdimensionale Arrays zu verschmelzen und bewahren Schlüssel

Ein Beispiel hier:

$a = array(
     1=>array(
       -1 => array(-1=>'a: 1 -1 -1',0=>'a: 1 -1 0',1=>'a: 1 -1 1'), 
       0 => array(-1=>'a: 1 0 -1', 0=>'a: 1 0 0', 1=>'a: 1 0 1'), 
       1 => array(-1=>'a: 1 1 -1', 0=>'a: 1 1 0', 1=>'a: 1 1 1') 
     ) 
); 

$b = array(
     1=>array(
       1 => array(-1=>'b: 1 1 -1',0=>'b: 1 1 0',1=>'b: 1 1 1'), 
       2 => array(-1=>'b: 1 2 -1',0=>'b: 1 2 0',1=>'b: 1 2 1'), 
       3 => array(-1=>'b: 1 3 -1',0=>'b: 1 3 0',1=>'b: 1 3 1') 
     ) 
); 

Das Ergebnis des Tuns $ a + $ b ist:

Array 
(
    [1] => Array 
     (
      [-1] => Array 
       (
        [-1] => a: 1 -1 -1 
        [0] => a: 1 -1 0 
        [1] => a: 1 -1 1 
       ) 

      [0] => Array 
       (
        [-1] => a: 1 0 -1 
        [0] => a: 1 0 0 
        [1] => a: 1 0 1 
       ) 

      [1] => Array 
       (
        [-1] => a: 1 1 -1 
        [0] => a: 1 1 0 
        [1] => a: 1 1 1 
       ) 

     ) 

) 

Und ich brauche, um PHP zu sagen: „Hey, die Tasten [1] [ 2] [X] und [1] [3] [X] in dem 'b'-Array ist nicht in dem 'A' Array, so verschmelzen sie im Ergebnis“.

Ich weiß nicht einmal so viel Sorgfalt, die man PHP nehmen wird, wenn alle drei Tasten gleich sind. Die Werte der Schlüssel sind Strings, also bin ich auch nicht daran interessiert, diese Werte zu summieren. Und ich muss bewahren die Schlüssel, so dass eine einfache array_merge nicht nützlich ist. Vielleicht muss ich es mit anderen Funktionen kombinieren, aber ich sehe nicht welche.

Vielen Dank im Voraus.

+0

Aus Interesse haben Sie versucht, [array_merge_recursive] (http://www.php.net/manual/en/function.array-merge-recursive.php) oder [array_replace_recursive] (http: // www. php.net/manual/en/function.array-replace-recursive.php) um das gewünschte Ergebnis zu erhalten? – Tom

+0

Ich möchte nicht, dass PHP mit mir spricht. Ich möchte nur mit PHP "reden", aber ich weiß nicht, wie es geht. – cooper

+0

Schauen Sie sich hier: http://php.net/manual/en/function.array.php Sicherlich kann man etwas machen es Ihnen leicht finden. PHP verwendet normalerweise einen sinnvollen Namen für die Funktionen – Mojtaba

Antwort

3

könnten Sie versuchen, die array_replace_recursive Funktion:

array_replace_recursive($a, $b); 

Die Ausgabe sieht so aus:

Array 
(
    [1] => Array 
     (
      [-1] => Array 
       (
        [-1] => a: 1 -1 -1 
        [0] => a: 1 -1 0 
        [1] => a: 1 -1 1 
       ) 
      [0] => Array 
       (
        [-1] => a: 1 0 -1 
        [0] => a: 1 0 0 
        [1] => a: 1 0 1 
       ) 
      [1] => Array 
       (
        [-1] => b: 1 1 -1 
        [0] => b: 1 1 0 
        [1] => b: 1 1 1 
       ) 
      [2] => Array 
       (
        [-1] => b: 1 2 -1 
        [0] => b: 1 2 0 
        [1] => b: 1 2 1 
       ) 
      [3] => Array 
       (
        [-1] => b: 1 3 -1 
        [0] => b: 1 3 0 
        [1] => b: 1 3 1 
       ) 
     ) 
) 

Diese alle Einträge mit passenden Schlüssel mit dem Wert in $b, so dass nur überprüfen ersetzen wird, wenn das ist das Ergebnis gewünscht ein (sonst umkehren $a und $b).

+0

Perfekter Tom. Das ist der, nach dem ich gesucht habe. Danke so sehr! – cooper

+0

Kein Problem. Viel Glück mit Ihrem Projekt. – Tom

Verwandte Themen