PHP中两个关联数组的合并和求和
考虑到这两个阵列:PHP中两个关联数组的合并和求和,php,arrays,array-merge,Php,Arrays,Array Merge,考虑到这两个阵列: $first=array( 'books'=>1, 'videos'=>5, 'tapes'=>7, ); $second=array( 'books'=>3, 'videos'=>2, 'radios'=>4, 'rc cars'=>3, ); 我想把它们结合起来,这样我就可以 $third=array( 'books'=>4, 'videos'=>7, 'tapes'=>7, 'radios'=>4,
$first=array(
'books'=>1,
'videos'=>5,
'tapes'=>7,
);
$second=array(
'books'=>3,
'videos'=>2,
'radios'=>4,
'rc cars'=>3,
);
我想把它们结合起来,这样我就可以
$third=array(
'books'=>4,
'videos'=>7,
'tapes'=>7,
'radios'=>4,
'rc cars'=>3,
);
我在这里看到了一个函数:但它松开了键。您可以使用以下内容:
function sum_associatve($arrays){
$sum = array();
foreach ($arrays as $array) {
foreach ($array as $key => $value) {
if (isset($sum[$key])) {
$sum[$key] += $value;
} else {
$sum[$key] = $value;
}
}
}
return $sum;
}
$third=sum_associatve(array($first,$second));
只是为了与众不同。。。使用
func\u get\u args()
,闭包并将参数强制为数组:
function sum_associative()
{
$data = array();
array_walk($args = func_get_args(), function (array $arg) use (&$data) {
array_walk($arg, function ($value, $key) use (&$data) {
if (isset($data[$key])) {
$data[$key] += $value;
} else {
$data[$key] = $value;
}
});
});
return $data;
}
在您编辑之前,我已经测试了代码,它正在工作。让我也测试一下你的新代码。你也可以使用array\u merge,这会简单得多!看起来这样就行了。我将把它转换成一个函数。
array\u merge()
不会对值求和。对于重复键,它使用第二个数组中的值。