【发布时间】:2017-06-14 21:44:56
【问题描述】:
早上
我正在从一个名为 UNLEASHED 的软件中提取 StockOnHand 查询。
这是一个 XML 示例。
<StockOnHand>
<ProductCode>FL1/35/C</ProductCode>
<ProductDescription>350ml Flavour 1</ProductDescription>
<ProductGroupName>Edible</ProductGroupName>
<AllocatedQty>200.0000</AllocatedQty>
<AvailableQty>8254.0000</AvailableQty>
<QtyOnHand>8454.0000</QtyOnHand>
</StockOnHand>
<StockOnHand>
<ProductCode>FL1/65/C</ProductCode>
<ProductDescription>650ml Flavour 1</ProductDescription>
<ProductGroupName>Edible</ProductGroupName>
<AllocatedQty>2.0000</AllocatedQty>
<AvailableQty>86.0000</AvailableQty>
<QtyOnHand>88.0000</QtyOnHand>
</StockOnHand>
我真正在苦苦挣扎的是 GROUP by SIZE 和 SORT by AVAILABLE DESC
分组 按尺寸 看看 ProductCode 有 XXX/YY/X 吗? YY 是 4 种可能的产品尺寸之一。我得到这个 $size = substr($product->ProductCode, -4, 2);
排序 按可用 DESC
这是我到目前为止设置的 PHP。这正确显示了所有产品,但未按尺寸(12、05、25、50)分组或按可用数量 DESC 排序
function atUnit15()
{
echo "<h2>Qty @ Unit 15</h2>";
$prodXml = getProducts('warehouseCode=UNIT-15');
echo "<table border='1'>
<tr>
<th>Code</th>
<th>Description</th>
<th>Days since last sale</th>
<th>OnHand</th>
<th>On Orders</th>
<th>Available</th>
</tr>
<tbody>";
foreach ($prodXml->StockOnHand as $product) {
switch ($product->ProductGroupName) {
case 'Ice Cream':
$size = substr($product->ProductCode, -4, 2);
$code = $product->ProductCode;
$desc = $product->ProductDescription;
$saledays = $product->DaysSinceLastSale;
$onHand = floor($product->QtyOnHand);
$allocated = floor($product->AllocatedQty);
$available = floor($product->AvailableQty);
echo "<tr>
<td>$code</td>
<td> $desc</td>
<td> $saledays</td>
<td> $onHand</td>
<td> $allocated</td>
<td> $available</td>
</tr>";
default:
break;
}
}
echo "</tbody>";
echo "</table>";
}
【问题讨论】:
-
嗨,正如我在最后一段代码中看到的,您没有对结果进行排序。首先,您需要进行排序、分组或其他任何操作,然后您就可以打印它了。由于您在同一个 foreach 上打印结果,因此您永远不会拥有排序表。问候! :)
-
您好,感谢您的关注和回复。完全正确-我尝试的组/排序的每次迭代都不起作用。我已经尝试修改这个大约 3 周,并希望通过发布我能在正确的方向上得到推动。我与 grouping 最接近的是一个 switch($size),它通过列出一个大小来工作。但是,一旦我带来任何其他情况:它开始将两种尺寸混合在一起。
-
我想我误解了你的问题。其实,你的问题是什么?您是尝试排序然后打印表格,还是仅打印 AvailableQty 和 Size 字段时遇到麻烦?
-
正如你所说,我的问题是成功排序然后打印表格。
GROUP by SIZE然后SORT GROUP by AVAILABLE DESC -
GROUP是什么意思?多张桌子?这感觉就像是先按 Size 排序,然后按 AvailableQty 排序。请显示所需的结果。有一个不循环的解决方案!此外,XML 中必须有一个根。