У меня есть длинные массивы (может быть сотни) из $_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
,
Попытка изучить существующие темы, но не может решить проблемы из-за этих двух ключей.
Мне не совсем понятно, что вы подразумеваете под «суммированием массива с использованием 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
на количество уже хранится.
Других решений пока нет …