在与基于键的另一个数组进行比较之后,如何在PHP中附加到现有数组?

在与基于键的另一个数组进行比较之后,如何在PHP中附加到现有数组?,php,arrays,Php,Arrays,如何根据Array1的键将Array2的值追加到Array1中?谢谢。您可以尝试以下方法: Array1 ( [a]=>1; [b]=>2; [c]=>3 ) Array2 ( [a]=>1;[b] =>1 ) Required result: Array1 ( [a]=>2; [b]=>3; [c]=>3 ) 这不是最优雅的方式,使用array_walk或array_map,但我喜欢看到并知道到底发生了什么。这将提供您要查找的内容。首先对公

如何根据Array1的键将Array2的值追加到Array1中?谢谢。

您可以尝试以下方法:

Array1
(
[a]=>1; [b]=>2; [c]=>3
)

Array2
(
[a]=>1;[b] =>1
)

Required result:
Array1
(
[a]=>2; [b]=>3; [c]=>3
)

这不是最优雅的方式,使用array_walk或array_map,但我喜欢看到并知道到底发生了什么。这将提供您要查找的内容。

首先对公共键的值求和,然后将其他键添加到其他数组中:

foreach($array1 as $key=>$value){
    if(isset($array2[$key])){
       $array1[$key] = $array1[$key] + $array2[$key];
       }
    }
比如:

foreach ($array2 as $k2 => $a2){
   if (isset($array1[$k2])){
     $array1[$k2]+=$a2;
     unset($array2[$k2]);
   }
}
$array1 += $array2;

您应该了解。

问题的一部分是数组1可能与数组2的键不完全相同。因此,需要一个包含两个原始数组中所有键的数组,然后循环遍历这些键,检查它们是否存在于任一原始数组中,最后将其添加到最终的组合数组中

$array1 = array(
    'a' => 1,
    'b' => 2,
    'c' => 3,
);

$array2 = array(
    'a' => 1,
    'b' => 1,
);

array_walk(
    $array1,
    function (&$value, $key) use ($array2) {
        $value += (isset($array2[$key])) ? $array2[$key] : 0;
    }
);
var_dump($array1);

是的,他们是!但是键是可能包含空格的字符串如果array2包含元素d。。。。是否应将其作为新元素添加到array1中?如果array1中不存在键,但array2中存在键,该怎么办?根据现在问题的措辞,他询问的是如何将值添加到array1中。如果array1中不存在密钥,我认为他不会关心将该密钥从array2添加到array1。
$result = array();

function ParseArray(array $array, array &$result)
{
    foreach ($array as $k => $v) {
        if (!array_key_exists($k, $result) {
            $result[$k] = $v;
        } else {
            $result[$k] += $v;
        }
    }
}

ParseArray($Array1, $result);
ParseArray($Array2, $result);

print_r($result);
$array1 = array(
    'a' => 1,
    'b' => 2,
    'c' => 3,
);

$array2 = array(
    'a' => 1,
    'b' => 1,
);

array_walk(
    $array1,
    function (&$value, $key) use ($array2) {
        $value += (isset($array2[$key])) ? $array2[$key] : 0;
    }
);
var_dump($array1);
<?php
    $array1 = array('a' => 1, 'b' => 2, 'c' => 3);
    $array2 = array('a' => 1, 'b' => 2, 'd' => 3);
    $finalarr = array();
    $arrkeys = array_merge(array_keys($array1), array_keys($array2));
    $arrkeys = array_unique($arrkeys);

    foreach($arrkeys as $key) {
        $finalarr[$key] = 0;

        if (isset($array1[$key])) {
            $finalarr[$key] += $array1[$key];
        }
        if (isset($array2[$key])) {
            $finalarr[$key] += $array2[$key];
        }
    }

    print_r($finalarr);
?>