【问题标题】:Flatten multidimensional array not working展平多维数组不起作用
【发布时间】:2016-07-11 12:07:20
【问题描述】:

我有两个数组,如下所示。

$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 给了我结果,但是钥匙丢失了

【问题讨论】:

    标签: php arrays multidimensional-array merge


    【解决方案1】:

    只需合并$alerts_array 的第一个键[0],如下所示:

    $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

    【讨论】:

    • 那么请展示一些相关的示例/部分代码。这正是您的问题所述。
    • 结果是这样的: { ["CustomAlertsID"]=> int(3) ["CustomAlerts_Name"]=> string(10) "title demo" " ["CustomAlerts_PublishDate"]=> string (10)“2016-07-03”[“CustomAlerts_ExpiryDate”]=>字符串(10)“2016-07-21”[0]=>数组(1){[“button_text0”]=>字符串(16)“ Button Name1only" } [1]=> array(1) { ["button_text1"]=> string(12) "button name2" } [2]=> array(1) { ["button_text2"]=> string(16 ) "按钮 name3_new" } }
    • 它在3v4l.org/AfRQW.Its 中工作,在我的浏览器中为我提供上述输出。
    • 你是如何将 $alerts_array 转换为上述链接中的格式3v4l.org/AfRQW
    【解决方案2】:

    得到你想要的,因为 alerts 是一个数组:

    $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 数组。

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 2020-06-06
      • 1970-01-01
      • 2014-02-11
      • 2011-09-05
      • 2010-11-22
      • 1970-01-01
      相关资源
      最近更新 更多