Значения SUM для двух многомерных массивов в переполнении стека

У меня есть проблема, как суммировать значения двух многомерных массивов в PHP.
Например, два массива хранятся в переменных $ array_1 а также $ array_2

И $ array_1, и $ array_2 имеют вложенные массивы, в которых снова хранятся данные в соответствующих массивах. Обратите внимание, что данные организованы в виде x-данных и y-данных, где y-данные — это просто штамп DATE.

Мне нужно СУММИТЬ значения x-data этих двух массивов $ array_1 и $ array_2 относительно измерения y-data (DATE). Вот почему это было сложно для меня, закрытые ответы, которые я нашел, имеют только цифры.

Пример:

$ array_1

Array
(
[0] => object
(
[x-data] => Array
(
[data1] => 0
[data2] => 1
[data3] => 2
[data4] => 3
[data5] => 4
[data6] => 5
[data7] => 6
[data8] => 7
)

[y-data] => Array
(
[date] => 20141127
)

)

[1] => object
(
[x-data] => Array
(
[data1] => 2
[data2] => 4
[data3] => 6
[data4] => 8
[data5] => 10
[data6] => 12
[data7] => 14
[data8] => 16
)

[y-data] => Array
(
[date] => 20141128
)

)

)

$ array_2

Array
(
[0] => object
(
[x-data] => Array
(
[data1] => 0
[data2] => 1
[data3] => 2
[data4] => 3
[data5] => 4
[data6] => 5
[data7] => 6
[data8] => 7
)

[y-data] => Array
(
[date] => 20141127
)

)

[1] => object
(
[x-data] => Array
(
[data1] => 0
[data2] => 1
[data3] => 2
[data4] => 3
[data5] => 4
[data6] => 5
[data7] => 6
[data8] => 7
)

[y-data] => Array
(
[date] => 20141128
)

)

)

$ result = $ array_1 + $ array_2 должен выглядеть так:

Array
(
[0] => object
(
[x-data] => Array
(
[data1] => 0
[data2] => 2
[data3] => 4
[data4] => 6
[data5] => 8
[data6] => 10
[data7] => 12
[data8] => 14
)

[y-data] => Array
(
[date] => 20141127
)

)

[1] => object
(
[x-data] => Array
(
[data1] => 2
[data2] => 5
[data3] => 8
[data4] => 11
[data5] => 14
[data6] => 17
[data7] => 20
[data8] => 23
)

[y-data] => Array
(
[date] => 20141128
)

)

)

Я пробовал некоторые вещи, такие как foreach () внутри foreach (), но я получил эффект умножения значений массива (2 x 2 = 4 подмассива вместо 2).

Любая помощь?
Спасибо!

0

Решение

Вот частичный ответ, так как он должен работать только в том случае, если $ array1 и $ array2 имеют одинаковое количество элементов и имеют уникальные y-данные, и каждый из их x-данных (с общими y-данными) имеет одинаковое количество элементов.

$result = array_multisum($array1, $array2);

function array_multisum($array1, $array2)
{
$newArray = array();
foreach ($array1 as $object1) {
$newObject = new stdClass();
// find object in the 2nd array having the same data as current object
foreach ($array2 as $object2) {
// if object is found, sum the x-data with the current object
if ($object1->{'y-data'}['date'] === $object2->{'y-data'}['date']) {
$newObject->{'x-data'} = data_sum($object1->{'x-data'}, $object2->{'x-data'});
break;
}
}
$newObject->{'y-data'} = $object1->{'y-data'};
$newArray[] = $newObject;
}
return $newArray;
}

function data_sum($data1, $data2)
{
$newData = array();
// sum up the values for each key
foreach (array_keys($data1) as $key) {
$newData[$key] = $data1[$key] + $data2[$key];
}
return $newData;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]