@sidiqi

Как сложить значения массива php при удалении повторяющихся элементов?

Есть многомерный массив, если попадаются одинаковые по значения 'crm_code' я оставляю только один. Как при этом складывать значения quantity? Фильтрую по полю так:
foreach($tables as $element) {
            $hash = $element['crm_code'];
            $unique_array[$hash] = $element;
        }


Исходный массив выглядит так:
4 => array:4 [▼
    "crm_code" => 1000002659.0
    "code" => "B4901"
    "quantity" => 5.0
    "price" => 20006.0
  ]
  5 => array:4 [▼
    "crm_code" => 1000002659.0
    "code" => "B4614"
    "quantity" => 4.0
    "price" => 20005.0
  ]
  6 => array:4 [▼
    "crm_code" => 1000002659.0
    "code" => "B4316"
    "quantity" => 3.0
    "price" => 20004.0
  ]
  • Вопрос задан
  • 393 просмотра
Решения вопроса 1
roswell
@roswell
и швец, и жнец, и на дуде игрец
foreach ($tables as $element) {
    $hash = $element['crm_code'];
    if (isset($unique_array[$hash])) {
        $element['quantity'] += $unique_array[$hash]['quantity'];
    }
    $unique_array[$hash] = $element;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@akamap
array_count_values(array_column($tables, 'crm_code'));
Ответ написан
Комментировать
VladimirAndreev
@VladimirAndreev
php web dev
$items = [];

foreach($tables as $element) {
    if(!isset($items[$element])) { $items[$element] = []; }
    $items[$element][] = $element['quantity'];
}

$items = \array_map('array_sum', $items);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы