检查类似的会话变量,如果存在则仅增加数量

时间:2019-05-03 16:27:30

标签: php

我需要将商品添加到购物车中,因此,如果我添加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。

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);
    }