如果商品已存在于购物车中,则将数量增加1

时间:2017-09-01 18:32:47

标签: php

我想使用foreach循环来遍历购物车中的所有产品,如果它存在并且用户再次将其添加到购物车,它应该将该项目的总数增加1但我不知道如何实现这一点。我想要发生的是,如果用户点击"添加到购物车"在商品上,它会被添加到购物车中,数量为1.如果他们点击了"添加到购物车"对于同一项目,它应该更改为该项目的数量2。

    $product_id = $_POST['id'];

    if (!isset($_SESSION['cart_array'])) {
        $_SESSION['cart_array'] = array(
            "item_id" => $product_id,
            "quantity" => 1
        );
    }
    else {
        if (in_array($product_id, $_SESSION['cart_array'])) {
            // add 1 to items already in cart
            $_SESSION['cart_array'] = $product_id . " " . "Item exists, add 1";
        }
        else {
            array_push($_SESSION['cart_array'], array(
                "item_id" => $product_id,
                "quantity" => 1
            ));
        }
    }

我已更新此问题:

我设法让它只增加数组中的第一项,但需要它对购物车中的每个项目都做同样的事情:

if(!isset($_SESSION['cart_array'])) {
    $_SESSION['cart_array'] = array("item_id" => $product_id, "quantity" => 1);

        } else {


            if(in_array($product_id, $_SESSION['cart_array'])) {
                $_SESSION['cart_array']= array("item_id" => $product_id, "quantity" => $_SESSION['cart_array']['quantity'] + 1);



            } else {


        array_push($_SESSION['cart_array'], array("item_id" => $product_id, "quantity" => 1));

            }
    }

2 个答案:

答案 0 :(得分:1)

为什么不使用关联数组?

<?php

$productID = $_POST['id'];

session_start();

if (!isset($_SESSION['cart_array']))
{
    $_SESSION['cart_array'] = [];
}
if (!isset($_SESSION['cart_array'][$productID]))
{
    $_SESSION['cart_array'][$productID] = [
        "quantity" => 0
    ];
}

$_SESSION['cart_array'][$productID]['quantity']++;

答案 1 :(得分:-1)

$product_id = $_POST['id'];

if (!isset($_SESSION['cart_array'])) {
    $_SESSION['cart_array'] = array(
        "item_id" => $product_id,
        "quantity" => 1
    );


}
else {
    if (in_array($product_id, $_SESSION['cart_array'])) {
            $_SESSION['cart_array'] = array(
                "item_id" => $product_id,
                "quantity" => $_SESSION['cart_array']["quantity"]++
            );

    }
}