在两个不同的数组中合并同一列

时间:2019-02-11 07:22:40

标签: php

我正在尝试将同一列合并到两个不同的数组中, Array2是Array1的一部分,对于PartyName列的某些更新,我正在使用array_column从主array1提取该列,然后对array2进行一些修改,然后再次合并。 像

Array1:

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

Array2:

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

让我们假设

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

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

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

答案 2 :(得分:-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 )