使用关联数组的概念进行挣扎,该关联数组将userID映射到partID并重新订购该部件的数量。
我们需要重新订购一系列零件,但我必须跟踪哪个用户需要为他们重新购买哪些零件。 UserID列表来自一个表,然后inventory_used来自另一个表。
假设一个这样的列表:
示例一:
UserID PartID Qty_Used
1 3 2
1 4 7
2 1 4
2 4 3
3 3 5
使用上述信息创建数组后,我必须为部件创建重新订购表单(表格)。因此,忽略userID,按partID对它们进行分组,并总计总数量(每个部分)。重新订购表应如下所示:
示例二:
PartID Qty_to_Reorder
1 4
3 7
4 10
我知道我会因为没有显示代码而采取大量的downvotes,但我不能完全围绕这个看似简单的问题。 (这是我的办公室,而不是学校项目。)
我如何:
(1)构造第一个数组(创建它的循环是什么样的?),然后是
(2)按照上面第二个例子,循环遍历该数组以汇总/分组partIDs => Qty
以获得重新订购报告?
对于第一个循环,我正在考虑这样的事情:
Loop through UserIDs {
Loop through PartIDs {
$arrReorder[UserID][PartID] = Qty_Used;
}
}
这是对的吗?我如何循环$ arrReorder来总结每个partID使用的数量,并获得重新订购报告(例2)?
答案 0 :(得分:0)
SELECT SUM(Qty_Used)AS total FROM mytable WHERE PartID = 3
PS:使用PHP
<?php
$data = array();
$data[] = array("UserID" => 1, "PartID" => 3, "Qty_Used" => 2);
$data[] = array("UserID" => 1, "PartID" => 4, "Qty_Used" => 7);
$data[] = array("UserID" => 2, "PartID" => 1, "Qty_Used" => 4);
$data[] = array("UserID" => 2, "PartID" => 4, "Qty_Used" => 3);
$data[] = array("UserID" => 3, "PartID" => 3, "Qty_Used" => 5);
$PartID = 3;
$sum = 0;
foreach ($data as $arr) {
if ($arr['PartID'] == $PartID)
$sum += $arr['Qty_Used'];
}
echo $PartID."\t".$sum."\r\n";
?>
答案 1 :(得分:0)
数组有一个键和值,其中值可以是另一个数组。确定关键值是什么。
我假设您有用户消耗零件,您必须从供应商处重新订购零件。否则用户是客户并且用户具有自动重新订购策略。
什么触发重新排序?如果重新订购数量为10且用户使用1,则库存应为9。
创建partsUsed数组元素,这有点棘手:
$partsUsed[$part][] = array($qtyUsed,$user);
空括号[]
的原因是允许在所使用的部件中使用重复的部件号,并且仍然是关键部件作为键。
该值是一个用于键入用户和部件之间关联的数组。
你最终得到的是一个顺序编号的辅助键,其值只是一个扔掉,但允许重复的部件号。
$partsUsed[3][] = array(2,1);
$partsUsed[4][] = array(7,1);
$partsUsed[1][] = array(4,2);
$partsUsed[4][] = array(3,2);
$partsUsed[3][] = array(5,5);
ksort($partsUsed); // sorts key on part number
var_export($partsUsed);
结果数组(var_export): 阵列( 1 =&gt; 阵列( 0 =&gt; 阵列( 0 =&gt; 4, 1 =&gt; 2, ) ) 3 =&gt; 阵列( 0 =&gt; 阵列( 0 =&gt; 2, 1 =&gt; 1, ) 1 =&gt; 阵列( 0 =&gt; 5, 1 =&gt; 5, ) ) 4 =&gt; 阵列( 0 =&gt; 阵列( 0 =&gt; 7, 1 =&gt; 1, ) 1 =&gt; 阵列( 0 =&gt; 3, 1 =&gt; 2, ) ) )
注意第3部分和第4部分有两个数组。
$reorder[1] = 4 ;
$reorder[2] = 7 ;
$reorder[4] = 10 ;
var_export($reorder);
结果数组:
array (
1 => 4,
2 => 7,
4 => 10,
)
现在不确定如何确定重新排序的内容和数量
我将展示如何获取值:
foreach($partsUsed as $part => $value){
foreach($value as $k => $v){
echo "Part $part: Qty:$v[0] User:$v[1]\n";
$qtyUsed[$part] += $v[1];
}
}
var_export($qtyUsed);
输出:
Part 1: Qty:4 User:2
Part 3: Qty:2 User:1
Part 3: Qty:5 User:3
Part 4: Qty:7 User:1
Part 4: Qty:3 User:2
$ qtyUsed
array (
1 => 2,
3 => 4,
4 => 3,
)
foreach ($qtyUsed as $part => $qty){
$order[$part] = $reorder[$part];
}
var_export($order);
结果$ order:
array (
1 => 4,
3 => 7,
4 => 10,
)