这个问题在这里已有答案:
我试图在两个不同的数组中合并相同的列,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
)
)
使用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)
}
}
让我们假设
您当前的数据存储在$array1
中,更新的字段数据存储在$array2
中
foreach($array1 as $key=>&$arr){
if(isset($array2[$key])){
$arr=array_merge($arr,$array2[$key]);
}
}
在这里,我使用了&
符号作为元素的传递参考。现在$array1
是具有更新值的最终数组
我使用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 )