展平多维数组无法正常工作

时间:2016-07-11 12:07:21

标签: php arrays multidimensional-array merge

我有两个如下的阵列。

$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正在给我结果,但键丢失了

2 个答案:

答案 0 :(得分:1)

只需合并boost的第一个键[0],就像这样:

$alerts_array

那将输出:

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

另见工作演示here

答案 1 :(得分:0)

获得你想要的东西,因为警报是一个数组数组:

    <?php 
    query_posts('showposts=10');
    query_posts("cat=2");
    if( have_posts() ):

        while( have_posts() ): the_post(); ?>

            <?php get_template_part('content',get_post_format()); ?>

        <?php endwhile; ?>

            <?php next_posts_link('« Older Posts'); ?>
            <?php previous_posts_link('Newer Posts »'); ?>

    <?php endif;
        wp_reset_query();   
    ?>  

但是对于数组数组,您可能需要一个循环。不确定每个人是否会是同一个人,或者你是否会有倍数,但这对你有帮助。

$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); } 以获取可能存在的每个精确数组。