我有来自$_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
基本上是每个数组的TOTAL,它们具有相同的Batch_No
和Prod_ID
。
尝试探索现有主题,但由于这两个键无法解决问题。
答案 0 :(得分:1)
我并不完全清楚你的意思是"使用Batch_No和Prod_ID来总结数组":我看不到'唯一性'在Prod_ID中。 Hoewever,以下代码将创建一个仅包含唯一$totals
的数组('Batch_No'
),对于这些数组,所有(第一个)匹配值为Expire
,{{1} }和Prod_ID
,以及zID_Line
'的总和。
Qty
它通过迭代POST值来工作。对于$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];
}
}
中找到的每个值,它会尝试在Batch_No
中找到它。如果不存在,请添加它。如果已经存在,请保留大部分值,但将$totals
中找到的数量添加到已存储的数量中。