Как суммировать все одинаковые значения ключей в многомерном массиве, где ключи имеют массив? - PullRequest
0 голосов
/ 12 сентября 2018

Как добавить все столбчатые значения по ассоциативному ключу в PHP? Обратите внимание, что клавиша [1GB] является динамической

Array(
[0] => Array
        (
            [1GB] => array(1,2,1,3)
            [2GB] => array(1,2,1,3)
        )
[1] => Array
        (
            [1GB] => array(1,2,1,3)
            [2GB] => array(1,2,1,3)
            [5GB] => array(1,2,1,3)
        )
[2] => Array
        (
            [3GB] => array(1,2,1,3)
            [4GB] => array(1,2,1,3)
        )
[2] => Array
        (
            [3GB] => array(1,2,1,3)
            [4GB] => array(1,2,1,3)
        )
)

Желаемый результат:

Array(
[1GB] => array(2,3,2,6)
[2GB] => array(2,3,2,6)
[3GB] => array(1,2,1,3)
[4GB] => array(1,2,1,3)
[5GB] => array(1,2,1,3)

)

1 Ответ

0 голосов
/ 12 сентября 2018

Я, вероятно, что-то неправильно понимаю, потому что я не получаю тот же вывод, который вы показали, в любом случае, это может помочь получить желаемый ответ

$dataset = [
    [
        ['1GB' => [1, 2, 1, 3]],
        ['2GB' => [1, 2, 1, 3]],
    ],
    [
        ['1GB' => [1, 2, 1, 3]],
        ['2GB' => [1, 2, 1, 3]],
        ['5GB' => [1, 2, 1, 3]],
    ],
    [
        ['3GB' => [1, 2, 1, 3]],
        ['4GB' => [1, 2, 1, 3]],
    ],
    [
        ['3GB' => [1, 2, 1, 3]],
        ['4GB' => [1, 2, 1, 3]],
    ]
];

$resume = [];

foreach ($dataset as $data) {
    foreach ($data as $item) {
        foreach ($item as $key => $value) {
            if (!array_key_exists($key, $resume)) {
                $resume[$key] = $value;
            } else {
                foreach ($value as $index => $number) {
                    $resume[$key][$index] += $number;
                }
            }
        }
    }
}

ksort($resume);

print_r($resume);

Вывод

Array
(
    [1GB] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 2
            [3] => 6
        )

    [2GB] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 2
            [3] => 6
        )

    [3GB] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 2
            [3] => 6
        )

    [4GB] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 2
            [3] => 6
        )

    [5GB] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 1
            [3] => 3
        )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...