2016-06-03 10 views
0

Ich habe dieses Array aus einer SQL-Abfrage:Ein Hash :: kombinieren Array

[0] => Array 
    (
     [T1] => Array 
      (
       [First] => A 
       [Second] => Apples 
       [LastChild] => F 
      ) 

     [0] => Array 
      (
       [LastChildNb] => 23 
      ) 

    ) 

Ich möchte dieses Ergebnis haben:

[0] => Array 
    (
     [0] => Array 
      (
       [First] => A 
       [Second] => Apples 
       [LastChild] => F 
       [LastChildNb] => 23 
      ) 

    ) 

Wie kann ich das tun? Ich denke ich sollte "hash :: combine" verwenden, aber was wäre der Code?

+0

Wird es immer diese Einrichtung sein? Zwei verschachtelte Arrays kombinieren? – chrisShick

+0

Nun, meine MySQL-Speicherprozedur gibt dies als eine Ergebnismenge aus, aber CakePHP interpretiert sie wie das obige Array. – flaggalagga

Antwort

0

Sie könnten etwas tun, mit $ arr über dem Array ist:

$arr = array_reduce($arr, function(&$arr, $v) { 
         return array_merge($arr, (array) $v); 
        }, array()); 
+0

Sorry, aber deine Funktion gibt mir diese: [T1] => Array ( [Erste] => Äpfel [Zweite] => z [Lastchild] => NC ) [0] => Array ( [LastChildNb] => 123 ) [1] => Array ( [LastChildNb] => 141 ) – flaggalagga

0

Sie tun können

array_merge($arr[0]['T1'], $arr[0][0]) 

Wo $ arr ist wie folgt definiert:

$arr = [0 => Array 
(
    'T1' => Array 
     (
      'First' => 'A', 
      'Second' => 'Apples', 
      'LastChild' => 'F' 
     ), 
    0 => Array 
     (
      'LastChildNb' => 23 
     ) 

)]; 

Für mehrere Datensätze in $ arr können Sie einfach alle Datensätze durchlaufen und diese manuell zusammenführen.

Angenommen, Sie erhalten das Array als Ergebnis einer find() -Methode, schlage ich vor, dass Sie T1__LastChildNb als Alias ​​innerhalb der 'Felder' Ihrer Bedingung verwenden. wenn Sie einen finden wie folgt Einfach gesagt, haben:

$this->T1->find('all', ['fields' => 'T1.*, (SOME SUBQUERY) AS LastChildNb']); 

dann Modifizieren es

$this->T1->find('all', ['fields' => 'T1.*, (SOME SUBQUERY) AS T1__LastChildNb']); 

sein könnte das sein, was Sie suchen, da es Array direkt gewünscht wird wieder (getestet auf 2.6) .

Lassen Sie mich wissen, wenn Sie an weiteren Informationen interessiert sind.