2016-07-11 13 views
0

Ich habe zwei Arrays wie folgt.Flatten mehrdimensionale Array funktioniert nicht

$alerts_array=array(1) { 
      [0]=> array(11) { 
          ["CustomAlertsID"]=> int(3) 
          ["CustomAlerts_Name"]=> string(10) "title demo" 
          ["CustomAlerts_PublishDate"]=> string(10) "2016-07-03" 
          ["CustomAlerts_ExpiryDate"]=> string(10) "2016-07-21" 
          } 
      } 
    $singlebtn_array =array(3) { 
     ["button_text0"]=> string(16) "Button Name1only" 
     ["button_text1"]=> string(12) "button name2" 
     ["button_text2"]=> string(16) "button name3_new" 
    } 

Ich habe die beiden Arrays in einem einzigen mehrdimensionalen Array zusammengefasst, die

$alerts_array = array_merge($alerts_array,$singlebtn_array); 

array(4) { [0]=> array(11) 
       { ["CustomAlertsID"]=> int(3) 
       ["CustomAlerts_Name"]=> string(10) "title demo" 
       ["CustomAlerts_PublishDate"]=> string(10) "2016-07-03" 
       ["CustomAlerts_ExpiryDate"]=> string(10) "2016-07-21" 
       } 

      [1]=> array(1) 
       { ["button_text0"]=> string(16) "Button Name1only" } 
      [2]=> array(1) 
       { ["button_text1"]=> string(12) "button name2" } 
      [3]=> array(1) { ["button_text2"]=> string(16) "button name3_new" } } 

wie folgt aussieht muss ich beide Schlüssel und Werte in der neuen abgeflachten Array

ich es so brauchen:

array(4) { [0]=> array(11) 
    { ["CustomAlertsID"]=> int(3) 
    ["CustomAlerts_Name"]=> string(10) "title demo" 
    ["CustomAlerts_PublishDate"]=> string(10) "2016-07-03" 
    ["CustomAlerts_ExpiryDate"]=> string(10) "2016-07-21" 
    ["button_text0"]=> string(16) "Button Name1only" 
    ["button_text1"]=> string(12) "button name2" 
    ["button_text2"]=> string(16) "button name3_new" }} 

Ich habe den folgenden Code zum Kombinieren verwendet.

$newArr = array(); 
foreach ($alerts_array as $key=>$tmp) { 
    $newArr = array_merge($newArr, array_values($tmp)); 
} 

Die $newArr ist mir das Ergebnis zu geben, aber Schlüssel

Antwort

1

einfach verschmelzen den ersten Schlüssel [0] Ihrer $alerts_array, wie diese verloren:

$alerts_array = array_merge($alerts_array[0], $singlebtn_array); 

dass folgende Ausgabe:

array(7) { 
    ["CustomAlertsID"]=> 
    int(3) 
    ["CustomAlerts_Name"]=> 
    string(10) "title demo" 
    ["CustomAlerts_PublishDate"]=> 
    string(10) "2016-07-03" 
    ["CustomAlerts_ExpiryDate"]=> 
    string(10) "2016-07-21" 
    ["button_text0"]=> 
    string(16) "Button Name1only" 
    ["button_text1"]=> 
    string(12) "button name2" 
    ["button_text2"]=> 
    string(16) "button name3_new" 
} 

Siehe auch die Arbeitsdemo here.

+0

Es funktioniert nicht wie erforderlich für mich – Techy

+0

Dann zeigen Sie bitte einige relevante Beispiele/Teile Ihres Codes. Das macht genau das, was deine Frage sagt. – Oldskool

+0

Das Ergebnis ist wie folgt: {["CustomAlertsID"] => int (3) ["CustomAlerts_Name"] => string (10) "title demo" "[" CustomAlerts_PublishDate "] => string (10)" 2016- 07-03 "[" CustomAlerts_ExpiryDate "] => string (10)" 2016-07-21 "[0] => array (1) {[" button_text0 "] => string (16)" Schaltfläche Name1only "} [1 ] => array (1) {["button_text1"] => string (12) "button name2"} [2] => array (1) {["button_text2"] => string (16) "button name3_new"} } – Techy

0

zu bekommen, was Sie wollen, weil Warnungen ein Array von Arrays ist:

$alerts_array = array_merge($alerts_array[0],$singlebtn_array); 

aber mit einer Reihe von Arrays werden Sie wahrscheinlich eine Schleife möchten. Nicht sicher, ob jeder das gleiche wäre oder wenn Sie mehrere haben, aber das wird Ihnen helfen.

$alerts_array; //Your array for arrays 
singlebtn_array; //Whatever this is 
$flattened_alerts_singlebtn = array();  

foreach($alerts_array as $alert_array){ 
    //This will be every array in the alerts as your flattened 
    //array with the singlebtn 
    $flattened_alerts_singlebt[] = array_merge($alert_array,$singlebtn_array); 
} 

Sie können dann $flattened_alerts_singlebtn Schleife jedes falttened Array zu erhalten, die existieren könnte.