数量未更新

时间:2019-04-15 03:06:58

标签: php arrays add cart

我正在尝试建立基本的购物车会话并添加产品。除了添加相同的项目外,我的所有工作都无法完成,它不能始终如一地更新数量。

我注意到,如果我仅在阵列中添加一种产品,然后尝试再次添加相同的产品,它的确会增加。但是,一旦有2种或更多不同的产品,添加现有产品不会更新数量,而是在阵列中添加整个条目。

2 个答案:

答案 0 :(得分:1)

我建议更改购物车的结构:而不是像

那样向购物车添加产品
$shopping_cart[] = Array
            (
                "productid" => $productId,
                "name" => "Fish Food",
                "quantity" => "3",
                "price" => "3.00",
                "weight" => "500g packet"
            );

像这样添加它:

$shopping_cart[$productId] = Array
            (
                "productid" => $productId,
                "name" => "Fish Food",
                "quantity" => "3",
                "price" => "3.00",
                "weight" => "500g packet"
            );

,然后您可以根据需要检查产品是否在购物车中,而不只是使用isset($shopingcart[$product_id])或其他数组函数。

答案 1 :(得分:1)

原因是当您使用array_merge进行合并时。它只会使用元素,而不是键。

if(!empty($_POST["p_quantity"])) {
                $productById = queryFunc("SELECT * FROM products WHERE product_id='" . $_GET["prid"] . "'");


                $productArray = array('productid'=>$productById[0]["product_id"], 'name'=>$productById[0]["product_name"], 'quantity'=>$_POST["p_quantity"], 'price'=>$productById[0]["unit_price"], 'weight'=>$productById[0]["unit_quantity"]);

                if(!empty($_SESSION["shopping_cart"])) {
                    if(in_array($productById[0]["product_id"],array_keys($_SESSION["shopping_cart"]))) {
                        foreach($_SESSION["shopping_cart"] as $keys => $values) {
                                if($productById[0]["product_id"] == $keys) {
                                    if(empty($_SESSION["shopping_cart"][$keys]["quantity"])) {
                                        $_SESSION["shopping_cart"][$keys]["quantity"] = 0;
                                    }
                                    $_SESSION["shopping_cart"][$keys]["quantity"] = $_SESSION["shopping_cart"][$keys]["quantity"] + $_POST["p_quantity"];
                                }
                        }
                    } else {
                        $_SESSION["shopping_cart"][$productById[0]["product_id"]] = $productArray;
                    }
                } else {
                    $_SESSION["shopping_cart"] = array();
                    $_SESSION["shopping_cart"][$productById[0]["product_id"] = $productArray;
                }
            }