2

我正在开发一个运费计算器,但我遇到了问题,让我告诉你我有什么,然后我会告诉你我的问题,

我的数组和foreach:

$array = unserialize($_SESSION['__vm']['vmcart']); 
foreach($array->products as $product){

$price = $product->product_price;
$amount = $product->quantity;
$length = $product->product_length;
$width = $product->product_width;
$height = $product->product_height;
$weight = $product->product_weight;
$supplier = $product->product_unit; 

 }

并且一切都适用于上面的代码(这不是我的问题)

我的问题是:

计算器必须从供应商 1 获取所有重量并将它们加在一起,然后对供应商 2 执行相同操作(见下文)

例子:

产品 1 - 重量为 5 公斤,来自供应商 1

产品 2 - 重量为 2 公斤,来自供应商 1

产品 3 - 重量为 9 公斤,来自供应商 2

供应商 1 的重量 = 至 7kg

供应商 2 的重量 = 至 9kg

如果反过来也一样,

现在我尝试的是一个 if 语句(见下文),但它所做的只是将每个产品的重量加在一起,

if ($supplier =='S1'){
    $s1_total_weight += $product->product_weight;
} if ($supplier =='S2'){
    $s2_total_weight += $product->product_weight;
}

echo 'Supplier 1 '.$s1_total_weight.'<br>';
echo 'Supplier 2 '.$s2_total_weight.'<br>';

我使用以下代码获取供应商编号(S1 = 供应商 1 - S2 = 供应商 2),

$supplier = $product->product_unit;

我是 php 新手,但我认为这与下面的代码有关,还是我错了?可以是if语句吗?

$product->product_weight

如果您需要更多信息,请告诉我,

如果您对此主题有更好的标题,请更改它:)

谢谢你的帮助。

4

1 回答 1

2
$weights = array();
foreach ($array->products as $product) {
    if (isset($weights[$product->product_unit])) {
        // there was already some weight for this supplier, just add to it
        $weights[$product->product_unit] += $product->product_weight;
    }
    else {
        // first time we encounter this supplier, set weight
        $weights[$product->product_unit] = $product->product_weight;
    }
}

foreach ($weights as $supplier => $totalWeight) {
    echo "Total weight for supplier {$supplier} is {$totalWeight}.";
}
于 2013-08-15T12:48:12.947 回答