【问题标题】:PHP array merge with keysPHP数组与键合并
【发布时间】:2016-08-14 18:51:09
【问题描述】:

如何合并这两个数组:

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,我需要一个aeeay,所有标签都结合了[user_id]、[value]、[key]、[viewers]、[channel]和子数组。

【问题讨论】:

标签: php arrays array-merge


【解决方案1】:

如评论中所问..这是你想要的吗?

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

【讨论】:

  • array_merge_recursive 是什么诀窍!感谢您的快速帮助!
【解决方案2】:

使用array_merge_recursive,它是专门为做这类事情而设计的。引用文档:

array_merge_recursive() 合并一个或多个数组的元素 在一起,以便将一个的值附加到末尾 前一个。它返回结果数组。

如果输入数组具有相同的字符串键,则 这些键被合并到一个数组中,这就完成了 递归地,因此如果其中一个值是数组本身,则 函数会将其与另一个数组中的相应条目合并 也。但是,如果数组具有相同的数字键,则后面的 value 不会覆盖原始值,而是会被追加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2015-06-02
    • 1970-01-01
    相关资源
    最近更新 更多