简体   繁体   English

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

[英]PHP update array with values and keys from another array

I have two arrays: 我有两个数组:

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

$b = [
    38 => 9,
    41 => 9,
    42 => 5
];

Array a has one extra key[36] and array b has a different value for key[41] . 数组a具有一个额外的key[36]而数组b具有key[41]的不同值。

How do i set a key in a to equal 0 if it is not in b and then how do i update a key in a if it has a different value in b and how do i add new keys to a if it is in b and not in a ? 我如何设置一个键a等于0 ,如果它是不是在b ,然后我如何更新的关键a如果它在不同的值b和如何添加新键a ,如果它是在b和没有a

For now i've made this code: 现在,我已经编写了以下代码:

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

And it works but i feel like there should be a much easier way :-s 它有效,但是我觉得应该有一种更简单的方法:-s

Update a key in a if it has a different value in b and how do i add new keys to a if it is in b and not in a 在更新的关键a如果它在不同的值b ,我如何新的密钥添加到a如果是b ,而不是在a

$a = array_replace($a, $b);

Set a key in a equal to 0 if it is not in b 设置在一个关键的a等于0,如果它不是在b

foreach(array_diff_key($a, $b) as $k=>$v) {
   $a[$k] = 0;
}

demo 演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM