Найти сумму многомерного массива в PHP

#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);