[英]PHP Associative Array Merge On Key
I am working to combine the following arrays: 我正在努力结合以下阵列:
Array #1 数组#1
[0] => Store1
[1] => Array (
[ytd] => Array (
[newups] => 1837
[usedups] => 1777
[totalups] => 3614
[totalsales] => 1446
)
[prevyear] => Array (
[newups] => 262
[usedups] => 281
[totalups] => 543
[totalsales] => 240
)
[prevmonth] => Array (
[goals] => Array (
[jangoal] => 236
[febgoal] => 224
[margoal] => 243
[aprgoal] => 218
[maygoal] => 221
[jungoal] => 239
[julgoal] => 241
[auggoal] => 0
)
[ups] => Array (
[newups] => Array (
[2016-01] => 193
[2016-02] => 0
[2016-03] => 0
[2016-04] => 0
[2016-05] => 0
[2016-06] => 0
[2016-07] => 0
[2016-08] => 0
)
)
)
[year] => 2016
[month] => September
[goalsales] => 197
[daily] => Array (
[ups] => Array (
[2016-09-01] => 18
[2016-09-02] => 0
[2016-09-03] => 0
[2016-09-04] => 0
[2016-09-05] => 0
[2016-09-06] => 0
[2016-09-07] => 0
[2016-09-08] => 0
[2016-09-09] => 0
[2016-09-10] => 0
[2016-09-11] => 0
[2016-09-12] => 0
[2016-09-13] => 0
[2016-09-14] => 0
[2016-09-15] => 0
)
[sold] => Array (
[2016-09-01] => 4
[2016-09-02] => 0
[2016-09-03] => 0
[2016-09-04] => 0
[2016-09-05] => 0
[2016-09-06] => 0
[2016-09-07] => 0
[2016-09-08] => 0
[2016-09-09] => 0
[2016-09-10] => 0
[2016-09-11] => 0
[2016-09-12] => 0
[2016-09-13] => 0
[2016-09-14] => 0
[2016-09-15] => 0
)
)
)
Array #2 阵列#2
[2] => Store2
[3] => Array (
[ytd] => Array (
[newups] => 626
[usedups] => 568
[totalups] => 1194
[totalsales] => 419
)
[prevyear] => Array (
[newups] => 96
[usedups] => 102
[totalups] => 198
[totalsales] => 81
)
[prevmonth] => Array (
[goals] => Array (
[jangoal] => 68
[febgoal] => 70
[margoal] => 75
[aprgoal] => 71
[maygoal] => 69
[jungoal] => 75
[julgoal] => 91
[auggoal] => 0
)
[ups] => Array (
[newups] => Array (
[2016-01] => 52
[2016-02] => 0
[2016-03] => 0
[2016-04] => 0
[2016-05] => 0
[2016-06] => 0
[2016-07] => 0
[2016-08] => 0
)
)
)
[year] => 2016
[month] => September
[goalsales] => 66
[daily] => Array (
[ups] => Array (
[2016-09-01] => 8
[2016-09-02] => 0
[2016-09-03] => 0
[2016-09-04] => 0
[2016-09-05] => 0
[2016-09-06] => 0
[2016-09-07] => 0
[2016-09-08] => 0
[2016-09-09] => 0
[2016-09-10] => 0
[2016-09-11] => 0
[2016-09-12] => 0
[2016-09-13] => 0
[2016-09-14] => 0
[2016-09-15] => 0
)
[sold] => Array (
[2016-09-01] => 7
[2016-09-02] => 0
[2016-09-03] => 0
[2016-09-04] => 0
[2016-09-05] => 0
[2016-09-06] => 0
[2016-09-07] => 0
[2016-09-08] => 0
[2016-09-09] => 0
[2016-09-10] => 0
[2016-09-11] => 0
[2016-09-12] => 0
[2016-09-13] => 0
[2016-09-14] => 0
[2016-09-15] => 0
)
)
)
The goal is to end up with a combined array (like the example below) in which both arrays have been combined recursively to maintain the array key structure, but return the sum of values: 目标是最终得到一个组合数组(如下面的示例),其中两个数组都已递归组合以维护数组键结构,但返回值的总和:
Combined Array 组合阵列
[1] => Array (
[ytd] => Array (
[newups] => 2463
[usedups] => 2354
[totalups] => 4808
[totalsales] => 1865
)
[prevyear] => Array (
[newups] => 358
[usedups] => 383
[totalups] => 543
[totalsales] => 240
)
[prevmonth] => Array (
[goals] => Array (
[jangoal] => 236
[febgoal] => 224
[margoal] => 243
[aprgoal] => 218
[maygoal] => 221
[jungoal] => 239
[julgoal] => 241
[auggoal] => 0
)
[ups] => Array (
[newups] => Array (
[2016-01] => 193
[2016-02] => 0
[2016-03] => 0
[2016-04] => 0
[2016-05] => 0
[2016-06] => 0
[2016-07] => 0
[2016-08] => 0
)
)
)
[year] => 2016
[month] => September
[goalsales] => 197
[daily] => Array (
[ups] => Array (
[2016-09-01] => 18
[2016-09-02] => 0
[2016-09-03] => 0
[2016-09-04] => 0
[2016-09-05] => 0
[2016-09-06] => 0
[2016-09-07] => 0
[2016-09-08] => 0
[2016-09-09] => 0
[2016-09-10] => 0
[2016-09-11] => 0
[2016-09-12] => 0
[2016-09-13] => 0
[2016-09-14] => 0
[2016-09-15] => 0
)
[sold] => Array (
[2016-09-01] => 4
[2016-09-02] => 0
[2016-09-03] => 0
[2016-09-04] => 0
[2016-09-05] => 0
[2016-09-06] => 0
[2016-09-07] => 0
[2016-09-08] => 0
[2016-09-09] => 0
[2016-09-10] => 0
[2016-09-11] => 0
[2016-09-12] => 0
[2016-09-13] => 0
[2016-09-14] => 0
[2016-09-15] => 0
)
)
)
I have tried to following code, but the output does not return the expected values: 我尝试执行以下代码,但是输出未返回预期值:
foreach ($array as $value){
$id = $value[];
if ( !isset($output[$id]) ) {
$output[$id] = array();
}
$output[$id] = array_merge($output[$id], $value);
}
Any help would be appreciated. 任何帮助,将不胜感激。
if i understand your question correctly, then this is how you can combine your arrays: 如果我正确理解了您的问题,那么这就是如何组合数组的方法:
function merge($arr1, $arr2)
{
$arr = [];
foreach ($arr1 as $key => $value) {
if (is_array($arr1[$key])) {
$arr[$key] = merge($arr1[$key], $arr2[$key]);
} else {
$arr[$key] = $arr1[$key] + $arr2[$key];
}
}
return $arr;
}
You might want to use the function array_merge_recursive to merge the 2 arrays. 您可能要使用函数array_merge_recursive合并两个数组。
$newarray = array_merge_recursive($array1, $array2);
Then you need to go through your new array and search recursively the key 0 and 1, and add their values. 然后,您需要遍历新数组并递归搜索键0和1,并添加它们的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.