合并两个不同数组中的相同列[重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

我试图在两个不同的数组中合并相同的列,Array2是Array1的一部分,对于PartyName列的一些更新我使用array_column从主array1获取该列然后对array2应用一些修改然后想要再次合并它。喜欢

数组1:

Array
(
    [0] => Array
        (
            [StorePartyId] => 10462791
            [StoreId] => 4
            [PartyName] => AMAR MEDICO
            [PartyCode] => 6840
        )

    [1] => Array
        (
            [StorePartyId] => 10463839
            [StoreId] => 4
            [PartyName] => NEW SAVE MEDICINE SHOPEE
            [PartyCode] => 8236
        )
)

古:

Array
(
    [0] => Array
        (
            [PartyName] => AMAR MEDICO_updated
        )

    [1] => Array
        (
            [PartyName] => NEW SAVE MEDICINE SHOPEE_updated
        )
)

我可以通过相互循环以编程方式合并这两个数组。但寻找一些内置的PHP数组功能。我尝试了array_merge函数,但它没有解决这个问题。

FinalArray

最终数组应该如下所示

Array
(
    [0] => Array
        (
            [StorePartyId] => 10462791
            [StoreId] => 4
            [PartyName] => AMAR MEDICO_updated
            [PartyCode] => 6840
        )

    [1] => Array
        (
            [StorePartyId] => 10463839
            [StoreId] => 4
            [PartyName] => NEW SAVE MEDICINE SHOPEE_updated
            [PartyCode] => 8236
        )
)
php
3个回答
3
投票

使用array_replace_recursive替换递归数组。 array_replace_recursive($Main_array, $Replacements);

$new = array_replace_recursive($arr,$arr2);

返回:

array(2) {
  [0]=>
  array(4) {
    ["StorePartyId"]=>
    int(10462791)
    ["StoreId"]=>
    int(4)
    ["PartyName"]=>
    string(19) "AMAR MEDICO_updated"
    ["PartyCode"]=>
    int(6840)
  }
  [1]=>
  array(4) {
    ["StorePartyId"]=>
    int(10463839)
    ["StoreId"]=>
    int(4)
    ["PartyName"]=>
    string(32) "NEW SAVE MEDICINE SHOPEE_updated"
    ["PartyCode"]=>
    int(8236)
  }
}

https://3v4l.org/fjTlq


0
投票

让我们假设

您当前的数据存储在$array1中,更新的字段数据存储在$array2

foreach($array1 as $key=>&$arr){
    if(isset($array2[$key])){
        $arr=array_merge($arr,$array2[$key]);
    }
}

在这里,我使用了&符号作为元素的传递参考。现在$array1是具有更新值的最终数组


-1
投票

我使用array_merge,它可以按你的意愿工作

$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge($a1,$a2));

结果:

Array ( [a] => red [b] => yellow [c] => blue )
© www.soinside.com 2019 - 2024. All rights reserved.