首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中合并多维数组

在PHP中合并多维数组
EN

Stack Overflow用户
提问于 2019-06-28 15:10:58
回答 3查看 29关注 0票数 0

我有2个数组,如下所示( array -1,Array-2),我想根据下面的条件合并为一个数组,如下所示(New)

(如果数组-1(HID)=数组-2(HID),则如下所示)

阵列-1

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [hID] => 107
            [env] => DEV
            [serv] => server1
        )

    [1] => Array
        (
            [hID] => 122
            [env] => DEV
            [serv] => server2
        )

阵列-2

代码语言:javascript
复制
Array
(
    [107] => Array
        (
            [hID] => 107
            [cpu] => 32
            [mem] => 24
        )

    [122] => Array
        (
            [hID] => 122
            [cpu] => 16
            [mem] => 24
        )

新阵列

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [hID] => 107
            [env] => DEV
            [serv] => server1
            [cpu] => 32
            [mem] => 24
        )

    [1] => Array
        (
            [hID] => 122
            [env] => DEV
            [serv] => server2
            [cpu] => 16
            [mem] => 24
        )
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-28 15:20:46

如果第二个数组总是具有与hID值相同的键,那么您可以执行以下操作:

代码语言:javascript
复制
$newArray = [];
foreach ($array1 as $item) {
    if (isset($array2[$item['hID']])) {
        $newArray[] = array_merge($item, $array2[$item['hID']]);
    }
}

或者,您可以始终使用以下方法创建这样的数组(键与hID值相同):

代码语言:javascript
复制
$array2 = array_combine(
    array_column($array2, 'hID'),
    $array2
);
票数 1
EN

Stack Overflow用户

发布于 2019-06-28 15:30:41

你可以试试这个:

测试数组

代码语言:javascript
复制
$array_1 = [
    0 => [
        "hID" => 107,
        "env" => "DEV",
        "serv" => "server1"
    ],
    1 => [
        "hID" => 122,
        "env" => "DEV",
        "serv" => "server2"
    ] 
];

$array_2 = [
    0 => [
        "hID" => 107,
        "cpu" => 32,
        "mem" => 24
    ],
    1 => [
        "hID" => 122,
        "cpu" => 16,
        "mem" => 24
    ] 
];

合并两个数组的代码

代码语言:javascript
复制
$new_array = [];
 for($i=0;$i<count($array_1);$i++) {
    for($j=0;$j<count($array_2);$j++) {
        if ($array_1[$i]['hID'] === $array_2[$j]['hID']) {
            $new_array[] = array_merge($array_1[$i], $array_2[$j]);
        }
    }
 }

输出:

代码语言:javascript
复制
 var_dump($new_array);

array(2) {
  [0]=>
  array(5) {
    ["hID"]=>
    int(107)
    ["env"]=>
    string(3) "DEV"
    ["serv"]=>
    string(7) "server1"
    ["cpu"]=>
    int(32)
    ["mem"]=>
    int(24)
  }
  [1]=>
  array(5) {
    ["hID"]=>
    int(122)
    ["env"]=>
    string(3) "DEV"
    ["serv"]=>
    string(7) "server2"
    ["cpu"]=>
    int(16)
    ["mem"]=>
    int(24)
  }
}

这里的测试:http://sandbox.onlinephpfunctions.com/

票数 0
EN

Stack Overflow用户

发布于 2019-06-28 15:14:26

代码语言:javascript
复制
if($array1[hID] == $array2[hID]){

$Array3 = array_merge($array1,$array2);}

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56809315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档