@anton99zel
29а класс средней школы №7

Как пересобрать массив, сложив некоторые значения?

print_r($stocks);
[597] => Array
  .......
[598] => Array
        (
            [0] => Array
                (
                    [UF_QUANTITY] => 2
                    [UF_BRAK] => 2
                    [UF_WAREHOUSENAME] => Химки
                    [UF_SUBJECT] => Лента праздничная
                )
            [1] => Array
                (
                    [UF_QUANTITY] => 8
                    [UF_BRAK] => 3
                    [UF_WAREHOUSENAME] => Мытищи
                    [UF_SUBJECT] => Лента праздничная
                )

        )

[599] => Array
.......

Как пересобрать массив, чтобы получить так:
[597] => Array
  .......
[598] => Array
                (
                    [UF_QUANTITY] => 10
                    [UF_BRAK] => 5
                    [UF_WAREHOUSENAME] => Химки(2 шт), Мытищи (8 шт)
                    [UF_SUBJECT] => Лента праздничная
                )

[599] => Array
.......

т.е. сложить некоторые значения отдельно (UF_QUANTITY) и отдельно (UF_BRAK), некоторые оставить (UF_SUBJECT) в рамках одного артикула
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
0xD34F
@0xD34F
$grouped = [];

foreach ($arr as $key => $items) {
  $group = [
    'UF_SUBJECT' => $items[0]['UF_SUBJECT'],
    'UF_QUANTITY' => 0,
    'UF_BRAK' => 0,
    'UF_WAREHOUSENAME' => [],
  ];

  foreach ($items as $item) {
    $group['UF_QUANTITY'] += $item['UF_QUANTITY'];
    $group['UF_BRAK'] += $item['UF_BRAK'];
    $group['UF_WAREHOUSENAME'][] = $item['UF_WAREHOUSENAME']." (".$item['UF_QUANTITY']." шт)";
  }

  $group['UF_WAREHOUSENAME'] = implode(', ', $group['UF_WAREHOUSENAME']);

  $grouped[$key] = $group;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы