Я работаю, чтобы объединить следующие массивы:PHP ассоциативного массива Объединить Key
Массив # 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
)
)
)
Массив # 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
)
)
)
Цель состоит в том, чтобы в конечном итоге с объединенный массив (как пример ниже), в котором оба массива были объединены рекурсивно для поддержания структуры ключа массива, но возвращают сумму значений:
Комбинированный массив
[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
)
)
)
Я попытался следующий код, но выход не возвращает ожидаемые значения:
foreach ($array as $value){
$id = $value[];
if (!isset($output[$id])) {
$output[$id] = array();
}
$output[$id] = array_merge($output[$id], $value);
}
Любая помощь будет оценена.
Вы пробовали array_merge_recursive? http://php.net/manual/en/function.array-merge-recursive.php – Lynne
Возможный дубликат [Array merge on key из двух ассоциативных массивов в php?] (http://stackoverflow.com/questions/9112920/array-merge-on-key-of-two-associative-arrays-in-php) –