【问题标题】:increase qty by 1 if item already exists in cart如果购物车中已存在商品,则将数量增加 1
【发布时间】:2017-09-01 18:32:46
【问题描述】:

我想使用 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));

            }
    }

【问题讨论】:

  • 究竟是什么问题?
  • 如果用户再次为购物车中的商品单击添加到购物车,我无法将其添加到购物车中的每个商品。这条线是我卡住的地方:if (in_array($product_id, $_SESSION['cart_array'])) { // add 1 to items already in cart $_SESSION['cart_array'] = $product_id . " " . "Item exists, add 1";
  • 用问题更新问题,不要在cmets中添加。
  • 完成。我希望现在更清楚了。

标签: php


【解决方案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']++;

【讨论】:

    【解决方案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'])) {
                $_SESSION['cart_array'] = array(
                    "item_id" => $product_id,
                    "quantity" => $_SESSION['cart_array']["quantity"]++
                );
    
        }
    }
    

    【讨论】:

    • 谢谢,我刚刚在您的代码if(in_array($product_id, $_SESSION['cart_array'])) { $_SESSION['cart_array']= array("item_id" =&gt; $product_id, "quantity" =&gt; $_SESSION['cart_array']['quantity'] + 1); 之前尝试过这个,它似乎只适用于一项。你的代码和我的代码需要在一个循环中
    猜你喜欢
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多