2016-03-24 15 views
0

Ich habe ein Array, das wie folgt aufgebaut istFlatten-Array in einem anderen Array in PHP

foreach($details as $data) 
{ 
    $loans[] = [ 
      'name' => 'Details', 
      [ 
       'name' => 'id', 
       'value' => 1 
      ], 
      [ 
       'name' => 'Date', 
       'value' => '2015' 
      ], 
      [ 
       'name' => 'Purpose', 
       [ 
        'name' => 'Code', 
        'value' => 123 
       ] 
      ], 
      getFees($data) 
     ]; 
} 

I die fees vom getFees Funktion verwenden müssen und diese Werte auf dem gleichen Niveau wie die ‚name‘ gesetzt haben => 'Details' oben.

private function getFees($data) 
{ 
    foreach($data as $item){ 
     $values[] = [ 
      'name' => 'type', 
      'value' => 'Interest' 
     ]; 
    } 
    return $values; 
} 

So erzeugt die oben folgende:

Array 
(
    [name] => Details 
    [0] => Array 
    (
     [name] => Details 
     [0] => Array 
      (
       [name] => id 
       [value] => 1 
      ) 

     [1] => Array 
      (
       [name] => Date 
       [value] => 2015 
      ) 
     [2] => Array 
      (
       [name] => Purpose 
       [0] => Array 
       (
         [name] => Code 
         [value] => 123 
       ) 
      ) 
      [3] => Array 
      (
       [0] => Array 
        (
         [name] => Type 
         [value] => Interest 

        ) 
      ) 
    ) 
) 

Aber ich will nicht, dass [3] Array weitere Ebene tiefer sein, ich will einfach:

Array 
(
    [name] => Details 
    [0] => Array 
    (
     [name] => Details 
     [0] => Array 
      (
       [name] => id 
       [value] => 1 
      ) 

     [1] => Array 
      (
       [name] => Date 
       [value] => 2015 
      ) 
     [2] => Array 
      (
       [name] => Purpose 
       [0] => Array 
       (
         [name] => Code 
         [value] => 123 
       ) 
     [3] => Array 
      (
       [name] => Type 
       [value] => Interest 
      )   
    ) 
) 

Klar Ich verpasse etwas - wenn ich array_merge außerhalb der Schleife versuche, dann befindet sich das fees Array außerhalb des Details Arrays.

Wenn die getFees Funktion nur das Array auf ein einzelnes Element setzt, dann funktioniert es gut, aber ich muss mehrere Elemente berücksichtigen, daher die $values[] Zuweisung.

Wie erzeuge ich das Array wie oben beschrieben?

Antwort

1

Wie Sie es geschrieben haben, würde getFees() mehrere Werte zurückgeben müssen, um das gewünschte Array zu erreichen. Da eine Funktion nur eine Sache zurückgeben kann, müssen Sie den Code neu schreiben.

Ich empfehle Ihnen, die getFees() -Aufruf aus Ihrem $ Loans-Array, und rufen Sie es anschließend, die Ergebnisse mit dem $ Loans-Array zusammenführen.

foreach($datum as $data){ 
    $temp = array(
     // your data 
    ); 

    $temp = array_merge($temp, getFees($data)); 

    $loans[] = $temp; 
} 
+0

dank aber ich vergessen, den Code (Ich habe jetzt bearbeitet) hinzuzufügen, um anzuzeigen, dass die anfängliche Zuordnung von 'loans' in einer foreach Schleife ist, so kann ich es nicht außerhalb gestellt, da sonst die sich ergebende Array enthält die Gebühren Daten außerhalb der spezifischen Array-Element sollte es sein .. hoffe, dass Sinn macht – yoyoma

+0

Die Antwort steht noch. Da getFees() ein Array zurückgibt und Sie möchten, dass sich die Array-Elemente am Ende des Darlehens-Arrays befinden, führen Sie einfach die beiden zusammen. –

+0

Ahh ... jetzt verstehe ich. Sie benötigen eine dritte Variable (Temp). –

Verwandte Themen