#php
#php
Вопрос:
Как я могу этого добиться, я новичок в PHP и застрял. пожалуйста, помогите, я знаю, что это не платформа для постановки такого рода вопросов, но все равно задаю из-за меньшего знания PHP.
У меня есть следующий массив, и я хочу вычислить сумму значений, которая относится к той же дате и тому же ключу.
Question Array:
Array
(
[0] => Array
(
[period] => 2019-02-01
[Campaign 1] => 70
[Campaign 4] => 0
[Campaign 3] => 0
)
[1] => Array
(
[period] => 2019-02-25
[Campaign 1] => 0
[Campaign 4] => 30
[Campaign 3] => 0
)
[2] => Array
(
[period] => 2019-02-25
[Campaign 1] => 50
[Campaign 4] => 0
[Campaign 3] => 0
)
[3] => Array
(
[period] => 2019-02-26
[Campaign 1] => 50
[Campaign 4] => 0
[Campaign 3] => 0
)
[4] => Array
(
[period] => 2019-02-26
[Campaign 1] => 0
[Campaign 4] => 45
[Campaign 3] => 0
)
[5] => Array
(
[period] => 2019-02-27
[Campaign 1] => 0
[Campaign 4] => 240
[Campaign 3] => 0
)
[6] => Array
(
[period] => 2019-02-27
[Campaign 1] => 430
[Campaign 4] => 0
[Campaign 3] => 0
)
)
Ожидаемый результат:
Array
(
[0] => Array
(
[period] => 2019-02-01
[Campaign 1] => 70
[Campaign 4] => 0
[Campaign 3] => 0
)
[1] => Array
(
[period] => 2019-02-25
[Campaign 1] => 50
[Campaign 4] => 30
[Campaign 3] => 0
)
[2] => Array
(
[period] => 2019-02-26
[Campaign 1] => 50
[Campaign 4] => 45
[Campaign 3] => 0
)
[3] => Array
(
[period] => 2019-02-27
[Campaign 1] => 430
[Campaign 4] => 240
[Campaign 3] => 0
)
)
Комментарии:
1. Что вы уже пробовали?
Ответ №1:
Для этого вы можете использовать array_reduce
:
$array = array_reduce($array, function ($carry, $item) {
if (!isset($carry[$item['period']])) {
$carry[$item['period']] = $item;
}
else {
$period = $item['period'];
unset($item['period']);
foreach ($item as $campaign => $value) {
$carry[$period][$campaign] = $value;
}
}
return $carry;
}, []);
$array = array_values($array);
var_dump($array);