1

我在删除/取消设置会话变量时遇到问题。

例如,如果我在购物车1、2、3中有 3 件商品,我删除了所有这些商品。它们应该从会话中删除,而是隐藏起来。

取消设置两个变量 这是我取消设置 2 个会话变量cart_arrayminicart

 <?php
      if (isset($_POST['index_to_remove']) && (!empty($_SESSION["cart_array"]["minicart"]))) {
        // Access the array and run code to remove that array index
        $key_to_remove = $_POST['index_to_remove'];
        if (count($_SESSION["cart_array"]["minicart"]) <= 1) {
            unset($_SESSION["cart_array"]["minicart"]);
        } else {
            unset($_SESSION["cart_array"]["minicart"]["$key_to_remove"]);
            sort($_SESSION["cart_array"]["minicart"]);
        }
    }
?>

HTML

   echo '<form action="cart.php" method="post">
            <input name="deleteBtn' . $item_id . '" 
            type="submit" value="Delete" />
            <input name="index_to_remove" 
            type="hidden" value="' . $i . '" />
            </form>';

同样在这个 header.php 页面中,我回显了两个会话变量cart_arrayminicart

我的问题是/问题是

如果您查看未设置的变量 ,则意味着取消设置会话变量cary_arrayminicart基于分配给这些会话的 itemid。现在,如果我单击删除按钮,则会从购物车中删除该项目,但是 *为什么不删除会话变量cary_arrayminicart从会话中删除?

我知道它已被删除,因为下面的代码显示会话变量不是被删除(未设置)

if(isset($_SESSION ['cart_array']) && !empty($_SESSION['cart_array'])) {
   echo ("I am still here");
    }
4

2 回答 2

2

当你这样做时:

unset($_SESSION['cart_array']['minicart']);

您只是在取消设置“minicart”,而不是“cart_array”。

如果你想取消设置“cart_array”和“minicart”,你应该这样做:

unset($_SESSION['cart_array']);

或者

$_SESSION['cart_array'] = array();

要测试数组是否为空,只需:

if ($_SESSION['cart_array']):
else:
endif;
于 2013-07-16T00:23:25.437 回答
2

尝试这个:

$_SESSION['cart_array'] = Array();//This should empty the cart.

然后只测试空。原因很可能是由于 PHP 的 GC 的工作方式。阅读此答案以获得更好的解释。

于 2013-07-16T00:05:21.733 回答