我有来自$_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"
}
}
我需要使用 Batch_No 和 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中没有看到"唯一性"。 Hoewever,下面的代码将创建一个数组($totals
),只有唯一的'Batch_No'
,对于那些,所有(第一个)匹配的值为Expire
,Prod_ID
和zID_Line
, 和Qty
的总和。
$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
中找到的数量添加到已存储的数量中。