我正在使用运费计算器,我有一个问题,让我告诉你我有什么,然后我会告诉你我的问题,
我的阵列和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
如果您需要更多信息,请与我们联系,
如果您对此主题有更好的标题,请更改它:)
感谢您的帮助。
答案 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}.";
}