在与基于键的另一个数组进行比较之后,如何在PHP中附加到现有数组?
如何根据Array1的键将Array2的值追加到Array1中?谢谢。您可以尝试以下方法:在与基于键的另一个数组进行比较之后,如何在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
(
[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);
?>