我需要将商品添加到购物车中,因此,如果我添加productid = 1的一种产品,然后又添加了productid = 1的同一产品,则只需要增加商品的数量而不添加该产品的另一个会话。
我尝试了以下操作:
foreach ($_SESSION['cart'] as $item) {
if ($item['product_id'] == $part_id) {
$quantity++;
}
}
但是我需要知道如何删除该产品的先前添加的会话。
这是我当前用于将产品添加到购物车中的代码,但是以下代码仅添加了数量为2的另一种产品,所以我有:
//-购物车-//
产品:1数量:1
产品:1数量:2
//-购物车-//
代码:
foreach ($_SESSION['cart'] as $item) {
if ($item['product_id'] == $part_id) {
$quantity++;
}
}
$_SESSION['cart'][] = array(
'product_id' => $part_id,
'title' => $title,
'price' => $price,
'default_img' => $default_img,
'quantity' => $quantity);
编辑:关于如何取消上一个会话的初始问题,但是如果我再次添加相同的产品,数量保持为2,这意味着它取消了上一个会话的数量= 3,而仅使数量+1递增表示数量仍为2。
答案 0 :(得分:0)
您正在处理关联数组。您具有要删除的对象的密钥。添加数量后,我将立即取消设置。现在,您可以使用更新的数量推送下一个对象。
foreach ($_SESSION['cart'] as $item) {
if ($item['product_id'] == $part_id) {
$quantity++;
$_SESSION['cart'][$part_id] == NULL //Add this
}
}
答案 1 :(得分:0)
这对我有用:
$exists = false;
foreach ($_SESSION['cart'] as $key => $item) {
if ($item['product_id'] == $part_id) {
$exists = true;
}
}
if ($exists == true) {
$_SESSION["cart"][$key]['quantity']++;
}
else{
$_SESSION['cart'][] = array(
'product_id' => $part_id,
'title' => $title,
'price' => $price,
'default_img' => $default_img,
'quantity' => $quantity);
}