【发布时间】:2013-07-14 00:06:56
【问题描述】:
我在删除/取消设置会话变量时遇到问题。
例如,如果我在购物车 1,2,3 中有 3 件商品,我删除了所有这些商品。它们应该从会话中删除,而是隐藏起来。
取消设置两个变量
这是我取消设置 2 个会话变量 cart_array 和 minicart
<?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_array 和 minicart
我的问题是/问题是
如果您查看 未设置变量,则意味着根据分配给这些会话的 itemid 取消设置会话变量 cary_array 和 minicart。
现在,如果我单击删除按钮,则会从购物车中删除该项目,但是 *为什么不从会话中删除会话变量 cary_array 和 minicart?
我知道它已被删除,因为下面的代码显示会话变量不是被删除(未设置)
if(isset($_SESSION ['cart_array']) && !empty($_SESSION['cart_array'])) {
echo ("I am still here");
}
【问题讨论】:
-
你没有
unset($_SESSION['cart_array']),只是其中的数组,所以你的测试将echo 'I am still here'。 -
这段代码中是否有 session_start() 取消会话?
-
@PHPglue 你能解释更多吗,也许请举例
-
@Colandus 你不需要每个php标签的start_session,但我确实在页面顶部有它,如问题所示:)
-
哦,我没有正确理解你的问题......现在我明白了......是的,他是对的。你只是在取消设置数组值,“minicart”......如果你想删除那个,你必须 unset($_SESSION['cart_array']) ......这就是你想要的吗?从会话中删除整个“cart_array”?