我需要以某种方式创建一个函数,从一个数组获取一个值,然后另一个数组合并它们。
这就是我的意思:
我有一个名为products的数组,其中包含所有产品信息(名称,价格等)和一个名为cart的数组,其中包含特定产品ID及其数量。
现在我想计算购物车的总价格,这意味着我需要以某种方式访问两个foreach循环(我需要从数组循环中获取价格并使用购物车循环的数量增加它)..这是我到目前为止所尝试的:
public function getTotalCart($items, $cart)
{
$total = 0; // the final price(with discount, tax and etc) of a single product(without quantity)
$qtyTotal = 0; /// the final price with the quantity
foreach ($items as $item) {
$total = $item->getFinal(); // I am getting the final price of the item
foreach ($cart as $id=>$quantity) {
$qtyTotal += $quantity * $total; // I am incrementing the quantity of the product with the products final price.
}
}
return $qtyTotal;
}
当我有一个产品时,这是有效的,但如果我添加另一个产品,定价是错误的......任何想法?
答案 0 :(得分:1)
如果 $ cart 是一个数组,其中键对应于商品ID和数量值,您可以这样做:
foreach ($items as $item) {
if (array_key_exists($item->getId(), $cart)) {
$qtyTotal += $cart[$item->getId()] * $item->getFinal();
}
}
答案 1 :(得分:0)
您必须检查购物车中的class EntryResource(ModelResource):
def hydrate(self, bundle):
if field in bundle.data:
date = bundle.data['pub_date']
bundle.data['pub_date'] = time.strptime(date, "%Y-%m-%d %H:%M:%S")
return bundle
是否与$id
ID相同。
$item
更好的是,让...
foreach($cart as $id=>$quantity) {
if ($id == $item->getId()) {
$qtyTotal += $quantity * $total;
}
}
...
数组id-indexed,然后只迭代推车:
$items
答案 2 :(得分:0)
我认为第二个foreach正在打破它。 使用第一个foreach你循环项目,如果你说的是正确的,那个购物车有相同的项目,它将为你拥有的每个项目执行购物车循环。 因此,如果您有4个项目,那么您将通过第一个foreach进行一次,但是您将通过第二个项目进行16次。 也许你可以做类似
的事情getItem()