Объединить значения по ключу в одном массиве - PullRequest
0 голосов
/ 01 сентября 2018

Ничто не делает именно то, что я хочу достичь. У меня есть следующий массив:

Array(

[0] => Array
    (
        [chicken] => 7
    )

[1] => Array
    (
        [cheese] => 9
    )

[2] => Array
    (
        [marinade] => 3
    )

[3] => Array
    (
        [cookbook] => 7
    )

[4] => Array
    (
        [chicken] => 11
    )

[5] => Array
    (
        [cheese] => 6
    )

[6] => Array
    (
        [marinade] => 12
    )

)

Я хочу суммировать все значения по их ключу. Если ключ находится в массиве несколько раз, например chicken, я хочу суммировать значения.

array
(
[chicken] => 18,
[cheese] => 16
... etc

)

Ответы [ 2 ]

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

Вот простой пример, надеюсь, он вам поможет.

$result = array();
foreach($data as $key => $value) 
{   
     $valueKey = key($value);
     $result[$valueKey] += $value[$valueKey];
}
0 голосов
/ 01 сентября 2018

Итак, сначала вам понадобится цикл для перебора первого массива для получения массивов второго уровня. Затем вы можете получить текущий ключ и значение из каждого из этих массивов, суммируя значения в новом массиве, связанном с ключом.

// where the sums will live
$sum = [];

foreach($array as $item) {
    $key = key($item);
    $value = current($item);
    if (!array_key_exists($key, $sum)) {
        // define the initial sum of $key as 0
        $sum[$key] = 0; 
    }
    // add value to the sum of $key
    $sum[$key] += $value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...