2016-08-14 77 views
-1

如何合并这两个数组:PHP数组合并与键

Array 
(
    [uczrrtawpxfjanycwwlqygoq] => Array 
    (
     [user_id] => 53 
     [value] => Boris 
     [key] => uczrrtawpxfjanycwwlqygoq 
    ) 

    [dreamhack] => Array 
    (
     [user_id] => 263 
     [value] => More 
     [key] => dreamhack 
    ) 

) 

我的第二个阵列需要被添加到第一

Array 
(
    [dreamhack] => Array 
    (
     [viewers] => 32229 
     [channel] => Array 
      (
       [broadcaster_language] => en 
       [display_name] => Dreamhack 
       [_id] => 22859340 
       [created_at] => 2011-06-09T06:11:52Z 
       [updated_at] => 2016-08-14T18:34:36Z 
       [delay] => 
       [banner] => 
       [background] => 
       [partner] => 1 
       [views] => 36258931 
       [followers] => 79892 
       [_links] => Array 
        (
         [self] => 
         [teams] => 
        ) 

      ) 

    ) 

) 

做一个简单的数组合并键给出原始数组而不是组合数组。所以对于dreamhack,我需要一个包含所有标签[user_id],[value],[key],[viewers],[channel]和子数组的标签。

+2

你尝试'阵列合并,recursive' http://www.php.net/manual/en/function.array-merge-recursive.php – caramba

回答

0

在评论中提问..这是你想要的吗?

<pre> 
<?php 

$array1 = [ 
    'uczrrtawpxfjanycwwlqygoq' => [ 
     'user_id' => 53, 
     'value' => 'Boris', 
     'key' => 'uczrrtawpxfjanycwwlqygoq' 
    ], 

    'dreamhack' => [ 
     'user_id' => 263, 
     'value' => 'More', 
     'key' => 'dreamhack' 
    ] 

]; 


$array2 = [ 
    'dreamhack' => [ 
     'viewers' => 32229, 
     'channel' => [ 
       'broadcaster_language' => 'en', 
       'display_name' => 'Dreamhack', 
       '_id' => 22859340, 
       'created_at' => '2011-06-09T06:11:52Z', 
       'updated_at' => '2016-08-14T18:34:36Z', 
       'delay' => '', 
       'banner' => '', 
       'background' => '', 
       'partner' => 1, 
       'views' => 36258931, 
       'followers' => 79892, 
       '_links' => [ 
         'self' => '', 
         'teams' => '' 
        ] 

      ] 

    ] 

]; 

$result = array_merge_recursive ($array1, $array2); 
var_dump($result); 
?> 
</pre> 

结果如下:

array(2) { 
    ["uczrrtawpxfjanycwwlqygoq"]=> 
    array(3) { 
    ["user_id"]=> 
    int(53) 
    ["value"]=> 
    string(5) "Boris" 
    ["key"]=> 
    string(24) "uczrrtawpxfjanycwwlqygoq" 
    } 
    ["dreamhack"]=> 
    array(5) { 
    ["user_id"]=> 
    int(263) 
    ["value"]=> 
    string(4) "More" 
    ["key"]=> 
    string(9) "dreamhack" 
    ["viewers"]=> 
    int(32229) 
    ["channel"]=> 
    array(12) { 
     ["broadcaster_language"]=> 
     string(2) "en" 
     ["display_name"]=> 
     string(9) "Dreamhack" 
     ["_id"]=> 
     int(22859340) 
     ["created_at"]=> 
     string(20) "2011-06-09T06:11:52Z" 
     ["updated_at"]=> 
     string(20) "2016-08-14T18:34:36Z" 
     ["delay"]=> 
     string(0) "" 
     ["banner"]=> 
     string(0) "" 
     ["background"]=> 
     string(0) "" 
     ["partner"]=> 
     int(1) 
     ["views"]=> 
     int(36258931) 
     ["followers"]=> 
     int(79892) 
     ["_links"]=> 
     array(2) { 
     ["self"]=> 
     string(0) "" 
     ["teams"]=> 
     string(0) "" 
     } 
    } 
    } 
} 
+0

array_merge_recursive是什么窍门! Thnx非常快速的帮助! –

0

使用array_merge_recursive,这是专门设计来做这种事情。引用文档:

array_merge_recursive()合并一个或多个阵列 在一起的元件,使得一个值被附加到 前一个的端部。它返回结果数组。

如果输入阵列具有相同的字符串键,则对于 这些键的值被合并为一个阵列,并且这样做 递归,所以如果其中一个值是数组本身, 功能会将它与另一个数组 中的相应条目合并。但是,如果数组具有相同的数字键,则后面的值不会覆盖原始值,但会被附加。