Преобразовать массив PHP
Array
(
[0] => Array
(
[code] => Сэндвич-панель кровельная ППС12Неопор 10000(+150) 1000 100 RAL5005 - / RAL1000 Трапеция
[quantity] => 10
[square] => 100.00000
[price_per_meter] => 1700
[cost] => 170000.00
)
[1] => Array
(
[code] => Сэндвич-панель кровельная ППС12Неопор 10000(+150) 1000 100 RAL5005 - / RAL1000 Трапеция
[quantity] => 5
[square] => 50.00000
[price_per_meter] => 1700
[cost] => 85000.00
)
[2] => Array
(
[code] => Сэндвич-панель кровельная ППС12Неопор 10000(+150) 1000 100 RAL5005 - / RAL1000 Трапеция
[quantity] => 11
[square] => 110.00000
[price_per_meter] => 1700
[cost] => 187000.00
)
[3] => Array
(
[code] => Сэндвич-панель стеновая ППУ 10000 1000 100 RAL1000 Гладкий / RAL1000 Гладкий
[quantity] => 10
[square] => 100.00000
[price_per_meter] => 2250
[cost] => 225000.00
)
[4] => Array
(
[code] => Сэндвич-панель стеновая ППУ 10000 1000 100 RAL1000 Гладкий / RAL1000 Гладкий
[quantity] => 5
[square] => 50.00000
[price_per_meter] => 2250
[cost] => 112500.00
)
[5] => Array
(
[code] => Сэндвич-панель стеновая ППУ 10000 1000 100 RAL1000 Гладкий / RAL1000 Гладкий
[quantity] => 11
[square] => 110.00000
[price_per_meter] => 2250
[cost] => 247500.00
)
[6] => Array
(
[code] => Нащельник объёмный НО 100 L2500 (1000)
[quantity] => 10
[square] => 5.25000
[price_per_meter] => 700
[cost] => 3675.00
)
[7] => Array
(
[code] => Швеллер Ш 102 L1750 (1000)
[quantity] => 5
[square] => 1.86000
[price_per_meter] => 700
[cost] => 1302.00
)
[8] => Array
(
[code] => Швеллер Ш 102 L1750 (1000)
[quantity] => 5
[square] => 1.86000
[price_per_meter] => 700
[cost] => 1302.00
)
[9] => Array
(
[code] => Болт-саморез HSP-R 185мм
[quantity] => 100
[square] => 0
[price_per_meter] => 15.50
[cost] => 1550.00
)
[10] => Array
(
[code] => Болт-саморез HSP-R 185мм
[quantity] => 150
[square] => 0
[price_per_meter] => 15.50
[cost] => 2325.00
)
)
Здравствуйте все. Немогу сообразить, как в приведенном массиве просуммировать ['quantity'], ['square'] и ['cost'] у элементов с одинаковым ['code'], и записать в другой массив только уникальные по ключу ['code'] элементы с просуммированными значениями.
Ответы (1 шт):
Автор решения: Alex Nem
→ Ссылка
Например как-то так?
$array = [
0 => [
'code' => "11111",
'quantity' => 10,
'square' => 100,
'price_per_meter' => 170,
'cost' => 170
],
1 => [
'code' => "11111",
'quantity' => 10,
'square' => 100,
'price_per_meter' => 170,
'cost' => 170
],
2 => [
'code' => "123",
'quantity' => 10,
'square' => 100,
'price_per_meter' => 170,
'cost' => 170
],
3 => [
'code' => "456",
'quantity' => 10,
'square' => 100,
'price_per_meter' => 170,
'cost' => 170
],
];
// Итоговый массив
$result = [];
// Пройти по исходному массиву
foreach($array as $key => $item)
{
// Используем code как индекс нового массива
$index = $item['code'];
// Если нет эелемента с таким индексом - добавляем
if(empty($result[$index]))
{
$result[$index] = $item;
}
// Если есть - суммируем
else
{
$result[$index]['quantity'] += $item['quantity'];
$result[$index]['cost'] += $item['cost'];
$result[$index]['square'] += $item['square'];
}
}
// Если нужен проиндексированный числами массив
$result = array_values($result);