拆分阵列以获得供应商的重量 - PHP -

时间:2013-08-15 12:40:31

标签: php arrays virtuemart

我正在使用运费计算器,我有一个问题,让我告诉你我有什么,然后我会告诉你我的问题,

我的阵列和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 - 重量为5kg,来自供应商1

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

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

供应商1的重量= 7公斤

供应商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

如果您需要更多信息,请与我们联系,

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

感谢您的帮助。

1 个答案:

答案 0 :(得分: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}.";
}