PHP使用来自另一个数组的值和键更新数组

PHP使用来自另一个数组的值和键更新数组,php,arrays,Php,Arrays,我有两个阵列: $a = [ 36 => 7, 38 => 9, 41 => 12, 42 => 5 ]; $b = [ 38 => 9, 41 => 9, 42 => 5 ]; 数组a有一个额外的键[36],而数组b有一个不同的键[41]值 如果a中的键不在b中,我如何将其设置为等于0;如果a中的键在b中具有不同的值,我如何更新a中的键;如果b中的键不在a中,我如何向a添加新键 目前,我已经编

我有两个阵列:

$a = [
    36 => 7,
    38 => 9,
    41 => 12,
    42 => 5
];

$b = [
    38 => 9,
    41 => 9,
    42 => 5
];
数组
a
有一个额外的
键[36]
,而数组
b
有一个不同的
键[41]

如果
a
中的键不在
b
中,我如何将其设置为等于
0
;如果
a
中的键在
b
中具有不同的值,我如何更新
a
中的键;如果
b
中的键不在
a
中,我如何向
a
添加新键

目前,我已经编写了以下代码:

foreach($a as $key => $value){
    if(array_key_exists($key, $b) && $value != $b[$key]){
        $a[$key] = $b[$key];
    } else{
        $a[$key] = 0;
    }
}

if($diff = array_diff_key($b, $a)){
    foreach($diff as $key => $value){
        $a[$key] = $value;
    }
}

ksort($a);
print_r($a);
它可以工作,但我觉得应该有一个更简单的方法:-s

a
中更新一个键,如果它在
b
中有不同的值,我如何在
a
中添加新键,如果它在
b
而不是
a

如果
a
中的键不在
b

如果
a
中的某个键在
b
中具有不同的值,则更新该键;如果
a
中的某个键在
b
中而不是
a
中,则如何向
a
添加新键

如果
a
中的键不在
b


为什么它不适用于从0开始的索引
array\u merge()
将连接数组,但是
array\u replace()
可以满足您的需要。@Barmar,我的
键实际上是鞋码:D这就是为什么我不从0开始:我在这里学习了一个新的PHP函数。我知道
array\u merge
,但不知道
array\u replace
@Barmar我在很多情况下都使用它。除了数组合并,我想为什么它不适用于从0开始的索引
array\u merge()
将连接数组,但是
array\u replace()
可以满足您的需要。@Barmar,我的
键实际上是鞋码:D这就是为什么我不从0开始:我在这里学习了一个新的PHP函数。我知道
array\u merge
,但不知道
array\u replace
@Barmar我在很多情况下都使用它。我想不仅仅是数组合并
$a = array_replace($a, $b);
foreach(array_diff_key($a, $b) as $k=>$v) {
   $a[$k] = 0;
}