【问题标题】:Cannot remove item from shop cart in session无法在会话中从购物车中删除商品
【发布时间】:2020-01-21 11:00:53
【问题描述】:

我有一个使用 PHP 会话的购物车。

添加项目:

$itemArray = array($produto=>
    array('id'=>$produto, 'titulo'=>$titulo, 'quantidade'=>$quantidade, 'preco'=>$preco, 'image'=>$img)
);

$_SESSION["cart_item"] = $itemArray;

$produto 是 ID(唯一)。

$itemArray 看起来像:

Array
(
    [0] => Array
        (
            [id] => 3
            [titulo] => Teste produto sem tamanho
            [quantidade] => 1
            [preco] => 1000.00
            [image] => /img/no_img.png
        )

    [1] => Array
        (
            [id] => 1
            [titulo] => Sapato masculino bonito e lustrado em couro
            [quantidade] => 2
            [preco] => 157.20
            [image] => produtos/1.jpg
        )

)

删除:

if($action == "remove") {
    $code = $_GET['code'];
    if(!empty($_SESSION["cart_item"])) {
        foreach($_SESSION["cart_item"] as $k => $v) {
            if($_GET["code"] == $k)
                unset($_SESSION["cart_item"][$k]);              
            if(empty($_SESSION["cart_item"]))
                unset($_SESSION["cart_item"]);
        }
    }
}

问题是,有时它会删除一种产品而其他产品不会。如果我有 2 个产品,它不会删除任何产品。 有什么想法有什么问题吗?

【问题讨论】:

  • $k 是索引,$v 是值,你确定你的比较应该是索引,而不是值,即if($_GET["code"] == $v)
  • @mitkosoft 使用 == $v 它也没有被删除。
  • 你在$_GET["code"] 中传递了什么与$itemArray 数组中的元素相匹配?
  • @mitkosoft 它是产品 ID,例如:cart.php?action=remove&code=1 我要删除的产品的 ID。
  • 你有一个多维数组,所以如果你需要取消设置整个SESSION元素,你需要比较if($_GET["code"] == $_SESSION["cart_item"][$k]['id'])或者if($_GET["code"] == $v['id'])

标签: php session foreach


【解决方案1】:

你有一个多维数组,所以如果你需要取消设置整个$_SESSION元素,你需要比较:

if($_GET["code"] == $_SESSION["cart_item"][$k]['id'])

if($_GET["code"] == $v['id'])

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 2018-07-22
    相关资源
    最近更新 更多