Групповой массив PHP двумя ключами и получим итого

У меня есть длинные массивы (может быть сотни) из $_POST и нужно резюмировать кол-во.

Ниже $_POST результат:

array(5) {
["Batch_No"]=>
array(3) {
[0]=>
string(7) "AAAV343"[1]=>
string(7) "AAAV343"[2]=>
string(7) "AAAV347"}
["Expire"]=>
array(3) {
[0]=>
string(0) ""[1]=>
string(0) ""[2]=>
string(0) ""}
["Prod_ID"]=>
array(3) {
[0]=>
string(5) "00041"[1]=>
string(5) "00041"[2]=>
string(5) "00041"}
["zID_Line"]=>
array(3) {
[0]=>
string(2) "17"[1]=>
string(2) "17"[2]=>
string(2) "17"}
["Qty"]=>
array(3) {
[0]=>
string(1) "1"[1]=>
string(1) "1"[2]=>
string(1) "1"}
}

Мне нужно суммировать массив с помощью Серия № а также Prod_ID, чтобы результат стал таким:

array(5) {
["Batch_No"]=>
array(2) {
[0]=>
string(7) "AAAV343"[1]=>
string(7) "AAAV347"}
["Expire"]=>
array(2) {
[0]=>
string(0) ""[1]=>
string(0) ""}
["Prod_ID"]=>
array(2) {
[0]=>
string(5) "00041"[1]=>
string(5) "00041"}
["zID_Line"]=>
array(2) {
[0]=>
string(2) "17"[1]=>
string(2) "17"}
["Qty"]=>
array(2) {
[0]=>
string(1) "2"[1]=>
string(1) "1"}
}

Qty в основном ИТОГО каждого массива, который имеет идентичные Batch_No А ТАКЖЕ Prod_ID,

Попытка изучить существующие темы, но не может решить проблемы из-за этих двух ключей.

0

Решение

Мне не совсем понятно, что вы подразумеваете под «суммированием массива с использованием Batch_No и Prod_ID»: я не вижу «уникальности» в Prod_ID. Однако следующий код создаст массив ($totals) только с уникальным 'Batch_No'и для тех, все (первые) совпадающие значения Expire, Prod_ID а также zID_Lineи сумма Qty«S.

$totals = array(
'Batch_No' => array(),
'Expire' => array(),
'Prod_ID' => array(),
'zID_Line' => array(),
'Qty' => array(),
);
foreach($_POST['Batch_No'] as $key => $value) {
if ($key2 = array_search($value, $totals['Batch_No'])) {
$totals['Qty'][$key2] += $_POST['Qty'][$key];
} else {
$totals['Batch_No'][] = $_POST['Batch_No'][$key];
$totals['Expire'][]   = $_POST['Expire'][$key];
$totals['Prod_ID'][]  = $_POST['Prod_ID'][$key];
$totals['zID_Line'][] = $_POST['zID_Line'][$key];
$totals['Qty'][]      = $_POST['Qty'][$key];
}
}

Это работает путем перебора значений POST. Для каждого значения, найденного в Batch_Noпытается найти его в $totals, Если его там нет, добавьте его. Если он уже есть, оставьте большинство значений в покое, но добавьте количество, найденное в Qty на количество уже хранится.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]