Упрощение массива путем удаления тех же значений ключа

У меня есть такой массив

массив
(
[0] => Массив
(
[vendor_id] => 2
[vendor_total_order] => 80
)

[1] => Массив
(
[vendor_id] => 2
[vendor_total_order] => 100
)

[2] => Массив
(
[vendor_id] => 1
[vendor_total_order] => 150
)
[3] => Массив
(
[vendor_id] => 3
[vendor_total_order] => 80
)

[4] => Массив
(
[vendor_id] => 5
[vendor_total_order] => 150
)

[5] => Массив
(
[vendor_id] => 1
[vendor_total_order] => 110
)

)

Я хочу упростить этот массив таким образом, чтобы, если «vendor_id» был одинаковым для двух значений, накопленное / суммированное значение должно быть присвоено «vendor_total_order» этому «vendor_id» (в основном мы удаляем значения, имеющие одинаковый vendor_id с общей стоимостью дубликатов).

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

массив
(
[0] => Массив
(
[vendor_id] => 2
[vendor_total_order] => 180
)

[1] => Массив
(
[vendor_id] => 1
[vendor_total_order] => 260
)
[2] => Массив
(
[vendor_id] => 3
[vendor_total_order] => 80
)

[3] => Массив
(
[vendor_id] => 5
[vendor_total_order] => 150
)

)

Как я могу это сделать ?

0

Решение

Вам просто нужно сгруппировать их, используя foreach. Пример:

$total = array();
foreach ($array as $key => $value) {
if(!isset($total[$value['vendor_id']])) {
$total[$value['vendor_id']] = array('vendor_id' => $value['vendor_id'], 'vendor_total_order' => 0);
}
$total[$value['vendor_id']]['vendor_total_order'] += $value['vendor_total_order'];
}

$total = array_values($total); // simple reindex
echo '<pre>';
print_r($total);

Пример вывода

1

Другие решения

Лучше всего написать собственный скрипт, который выполняет следующие действия:

  1. Создает пустой новый массив «result»
  2. Перебирает текущий массив и для каждого элемента:
  3. Если элемент не существует в результате, вставьте его, в противном случае обновите значение total_value как сумму его текущего значения и нового элемента.
  4. Сохранить массив результатов
0

По вопросам рекламы [email protected]