Я хотел бы расширить поток, найденный в Ассоциативный массив, значения суммы тот же ключ.
ОП спрашивает:
Вместо того, чтобы клавиша «Конференция» повторялась 3 раза. Я хочу иметь его только один раз и суммировать 3 значения в одно по порядку.
Дан ответ:
$sum = array_reduce($data, function ($a, $b) {
isset($a[$b['event']]) ? $a[$b['event']]['budget'] += $b['budget'] : $a[$b['event']] = $b;
return $a; });
У меня есть ассоциативный массив с более чем двумя значениями. Я хотел бы использовать функцию, подобную приведенной выше, но сложить вместе все ключевые значения, а не только "бюджет". Вот пример, который отражает мою ситуацию:
Массив выглядит следующим образом:
$data = array(
0 => array(
'event' => 'Conference',
'budget' => 3700,
'people' => 200,
'rate' => 3000,
),
1 => array(
'event' => 'Conference',
'budget' => 500,
'people' => 200,
'rate' => 6000,
),
2 => array(
'event' => 'Showroom',
'budget' => 1000,
'people' => 400,
'rate' => 30000,
),
3 => array(
'event' => 'Mission Chez client',
'budget' => 2000,
'people' => 200,
'rate' => 3000,
),
4 => array(
'event' => 'Séminaire',
'budget' => 700,
'people' => 40,
'rate' => 3000,
),
5 => array(
'event' => 'Livraison',
'budget' => 4000,
'people' => 2,
'rate' => 3000,
),
6 => array(
'event' => 'Conference',
'budget' => 334,
'people' => 200,
'rate' => 9000,
),
);
Если я использую приведенный выше код, я смогу сократить «Конференцию» до одной записи следующим образом:
[0] => Array
(
[event] => Conference
[budget] => 4534
[people] => 200
[rate] => 5000
)
Бюджетная цифра верна. Но фигура людей - нет. Как я мог получить сумму «людей» и «бюджета», чтобы [люди] => 600?
Наконец, возможно ли легко получить среднее значение для параметра "ставка"? Таким образом, для конференции это будет ((3000+6000+9000) / 3 = 6000).
В общем, я пытаюсь организовать таблицу, чтобы получить результат вроде:
[0] => Array
(
[event] => Conference // Key that appears multiple times
[budget] => 4534 //Sum of all conference budget
[people] => 600 //Sum of all conference people
[rate] => 5000 //Average rate of conference
)