2016-07-11 4 views
0

У меня есть два массива, как показано ниже.Сгладить многомерный массив не работает

$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" 
    } 

я слил два массива в один многомерный массив, который выглядит следующим образом

$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" } } 

мне нужно как ключи и значения в новом уплощенной массиве

мне нужно это так:

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" }} 

Я использовал следующий код для объединения.

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

$newArr дает мне результат, но ключи теряются

ответ

1

Просто объединить первый ключ [0] вашего $alerts_array, как это:

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

Это будет:

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" 
} 

Также см. Рабочую демонстрацию here.

+0

Не работает как требуется для меня – Techy

+0

Затем, пожалуйста, покажите некоторые соответствующие примеры/части вашего кода. Это делает именно то, о чем говорит ваш вопрос. – Oldskool

+0

Результат выглядит следующим образом: {["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)" Button Name1only "} [1 ] => array (1) {["button_text1"] => string (12) "button name2"} [2] => array (1) {["button_text2"] => string (16) "button name3_new"} } – Techy

0

Чтобы получить то, что вы хотите, потому что предупреждения является массивом массивов:

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

Но с массивом массивов вы, вероятно, хотите петлю. Не уверен, что каждый из них будет одним и тем же, или если у вас будут кратные, но это поможет вам.

$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); 
} 

Вы можете затем цикл $flattened_alerts_singlebtn, чтобы получить каждый falttened массив, который может существовать.

Смежные вопросы