上午
我从一些名为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>
GROUPING 按尺寸 了解ProductCode如何拥有XXX / YY / X? YY是4种可能的产品尺寸之一。我明白这个 $ size = substr($ product-&gt; ProductCode,-4,2);
分拣 可用DESC
这是我到目前为止设置的PHP。这正确显示了所有产品,但未按大小分组(12,05,25,50)或按AvailableQty 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>";
}
答案 0 :(得分:0)
一种可能的解决方案是使用自定义排序功能:
类似的东西:
$stockOnHand = $prodXml->xpath('/root/StockOnHand');
usort($stockOnHand, function ($t1, $t2) {
return substr($t1->ProductCode, -4, 2) > substr($t2->ProductCode, -4, 2);
});
使用XPath函数检索所有StockOnHand,在我的情况下,root
节点包装了所有StockOnHand
。
使用usort,基本上需要两个参数,一个是你的数组,第二个只是一个函数,这个函数将应用条件对你的数组进行排序。
将这些代码放在foreach之前:
美好的一天!