PHP Как вы суммируете элементы в массиве по одинаковому типу с двумя разными ограничивающими атрибутами
Учитывая массив, как это:
array(792) {
[0]=>
array(4) {
[0]=>
string(8) "KNOT1810"
[1]=>
string(6) "760.00"
[2]=>
string(5) "MBBOE"
[3]=>
string(38) "event 10/06/18"
}
[1]=>
array(4) {
[0]=>
string(8) "KNOT1810"
[1]=>
string(6) "400.00"
[2]=>
string(5) "MBPAR"
[3]=>
string(38) "event 10/06/18"
}
[2]=>
array(4) {
[0]=>
string(8) "KNOT1810"
[1]=>
string(6) "1760.00"
[2]=>
string(5) "MBBOE"
[3]=>
string(38) "event 10/06/18"
}
[3]=>
array(4) {
[0]=>
string(8) "KNOT1810"
[1]=>
string(6) "5860.00"
[2]=>
string(5) "MAINSECD"
[3]=>
string(38) "event 10/06/18"
}
[4]=>
array(4) {
[0]=>
string(8) "KNOT1810"
[1]=>
string(6) "-5000.00"
[2]=>
string(5) "MAINSECD"
[3]=>
string(38) "event 10/06/18"
}
[5]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "500.00"
[2]=>
string(5) "MBBOE"
[3]=>
string(38) "event 10/07/18"
}
[6]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "760.00"
[2]=>
string(5) "MBPAR"
[3]=>
string(38) "event 10/07/18"
}
[7]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "1760.00"
[2]=>
string(5) "MBBOE"
[3]=>
string(38) "event 10/07/18"
}
[8]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "5860.00"
[2]=>
string(5) "MAINSECD"
[3]=>
string(38) "event 10/07/18"
}
[9]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "-5000.00"
[2]=>
string(5) "MAINSECD"
[3]=>
string(38) "event 10/07/18"
}
[10]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "5000.00"
[2]=>
string(5) "MAINSECD"
[3]=>
string(38) "event 10/09/18"
}
}
В котором элементы в массиве с индексом [0] ("KNOT1810", "CHEN0707") являются кодами клиентов, а элементы с индексом [1] являются зарядами, а элементы с индексом [2] ("MBBAN", "MAINSECD"и т. Д.) - это КОДЫ ЗАРЯДОВ, а предметы с индексом [3] - ДАТЫ СОБЫТИЙ.
Может быть любое количество различных КОДОВ КЛИЕНТА, ЗАРЯДОВ (как положительных, так и отрицательных) и ДАТЫ СОБЫТИЙ, но существует определенный набор КОДОВ ЗАРЯДКИ:
'MBELE'
'MBFUR'
'MBINT'
'MBLAB'
'MBMIS'
'MBPAR'
'MBSEC'
'MBSPA'
'MBWAL'
'MAINSECD'
'MBBOE'
'MBBAN'
Как я могу отсортировать или уменьшить этот массив так, чтобы сборы объединялись (суммировались) с помощью одного и того же КОДА ЗАРЯДКИ только с одинаковыми ДАТА СОБЫТИЯ и КОДОМ КЛИЕНТА, но НЕ объединялись или не суммировались с КОДАМИ ЗАРЯДКИ из РАЗЛИЧНЫХ КОДОВ КЛИЕНТА, а НЕ объединялись с ОДНЫМ КОДОМ КЛИЕНТА, но РАЗНЫЕ ДАТЫ СОБЫТИЙ.
В результате получился бы такой массив:
array(792) {
[0]=>
array(4) {
[0]=>
string(8) "KNOT1810"
[1]=>
string(6) "2520.00"
[2]=>
string(5) "MBBOE"
[3]=>
string(38) "event 10/06/18"
}
}
[1]=>
array(4) {
[0]=>
string(8) "KNOT1810"
[1]=>
string(6) "400.00"
[2]=>
string(5) "MBPAR"
[3]=>
string(38) "event 10/06/18"
}
[3]=>
array(4) {
[0]=>
string(8) "KNOT1810"
[1]=>
string(6) "860.00"
[2]=>
string(5) "MAINSECD"
[3]=>
string(38) "event 10/06/18"
}
[5]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "2260.00"
[2]=>
string(5) "MBBOE"
[3]=>
string(38) "event 10/07/18"
}
[6]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "760.00"
[2]=>
string(5) "MBPAR"
[3]=>
string(38) "event 10/07/18"
}
[8]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "860.00"
[2]=>
string(5) "MAINSECD"
[3]=>
string(38) "event 10/07/18"
}
[8]=>
array(4) {
[0]=>
string(8) "CHEN0707"
[1]=>
string(6) "5000.00"
[2]=>
string(5) "MAINSECD"
[3]=>
string(38) "event 10/09/18"
}
}
В идеале я хочу избежать сложного для циклов и ручной сортировки / переиндексации и использовать что-то вроде array_reduce(), но я открыт для любого решения.
Обратите внимание, что в этом массиве могут быть тысячи элементов и дополнительные значения в элементах, не перечисленных в примере.
Благодарю вас!