#php #arrays
#php #массивы
Вопрос:
У меня есть следующее в массиве $orders.
Array
(
[0] => Array
(
[ORDER_NUMBER] => 0001
[NAME] => Customer 1
[LINE_TOTAL] => 100.00
)
[1] => Array
(
[ORDER_NUMBER] => 0001
[NAME] => Customer 1
[LINE_TOTAL] => 300.00
)
[2] => Array
(
[ORDER_NUMBER] => 0002
[NAME] => Customer 2
[LINE_TOTAL] => 550.00
)
[3] => Array
(
[ORDER_NUMBER] => 0003
[NAME] => Customer 3
[LINE_TOTAL] => 300.00
)
)
Я хочу сгруппировать их по порядковому номеру и сложить итоговые значения строк вместе, чтобы конечный массив выглядел следующим образом. Язык — PHP.
Array
(
[0] => Array
(
[ORDER_NUMBER] => 0001
[NAME] => Customer 1
[TOTAL] => 400.00 // 300 100 = 400
)
[1] => Array
(
[ORDER_NUMBER] => 0002
[NAME] => Customer 2
[TOTAL] => 550.00
)
[2] => Array
(
[ORDER_NUMBER] => 0003
[NAME] => Customer 3
[TOTAL] => 300.00
)
)
Если бы кто-нибудь мог помочь, это было бы здорово, я попробовал несколько разных вещей, но я не получаю требуемого результата.
Приветствия,
Ответ №1:
Это будет перебирать заказы и помещать их в ассоциативные индексы на основе вашего ORDER_NUMBER. Если одно из них уже существует, оно добавит к нему новую LINE_TOTAL .
$orders;
$newOrders;
foreach ($orders as $order) {
$id = $order['ORDER_NUMBER'];
if(isset($newOrders[$id])){
$newOrders[$id]['LINE_TOTAL'] = $order['LINE_TOTAL'];
} else $newOrders[$id] = $order;
}