Вот, попробуйте это - я уверен, что это не идеальное и не оптимальное решение (3 foreach-ов), но оно работает с достаточно большим набором данных ...
$ inputArray - многомерный массив с предоставленными вами данными, кстати ...
РЕДАКТИРОВАТЬ: Исправлена версия:
$result = array();
foreach( $inputArray as $subArray ) {
foreach ( $subArray as $subKey => $member ) {
if ( empty( $result[$subKey]) ) {
$result[$subKey] = $member;
} else {
foreach ( $member as $id => $subMember ) {
if ( empty( $result[$subKey][$id]) ) {
$result[$subKey][$id] = $subMember;
} else {
$result[$subKey][$id] += $subMember;
}
}
}
}
}
EDIT2: Поскольку вы изменили формат массивов, решение отличается:
Примечание: $ array1 и $ array2 - ваши "глобальные" предопределенные массивы.
$arrayWrapper = array_merge( ( array ) $array1, ( array ) $array2 );
$result = array();
foreach ( $arrayWrapper as $inputArray ) {
foreach( $inputArray as $subArray ) {
foreach ( $subArray as $subKey => $member ) {
if ( empty( $result[$subKey]) ) {
$result[$subKey] = $member;
} else {
foreach ( $member as $id => $subMember ) {
if ( empty( $result[$subKey][$id]) ) {
$result[$subKey][$id] = $subMember;
} else {
$result[$subKey][$id] += $subMember;
}
}
}
}
}
}
Протестировано с вашими данными, должно работать.
Приветствие.