删除$ _SESSION时未定义的索引

时间:2013-07-15 18:44:47

标签: php session count session-variables unset

我有这个代码从购物车中删除任何想法......我需要删除两个$_SESSION。 1) $ _ SESSION [" cart_array"]

2 $ _ SESSION [" minicart"]

如果我添加$_SESSION["minicart"],它会删除$_SESSION["cart_array"],但是当我添加它时,我得到了minicart部分,我得到了undefined index: minicart。所以我

试图

if(!isset($ _ SESSION [" cart_array"])|| count($ _ SESSION [" cart_array"])&&!isset($ _ SESSION [" minicart"])|| count($ _ SESSION [" minicart"])< 1){

上面的代码检查//如果未设置购物车会话变量或购物车数组为空 *

原始 if(!isset($ _ SESSION [" cart_array"])|| count($ _ SESSION [" cart_array"] )< 1){

所以

<?php

 //   if user wants to remove an item from cart
 if (isset($_POST['index_to_remove']) && $_POST['index_to_remove'] != "") {
    // 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"]);
    }
}
?>

我的问题if语句中查看尝试我错误的内容以及statement删除($_SESSION["cart_array"]) AND ($_SESSION["minicart"])

如果仍然不清楚,请发表评论,我会尽力再解释一下。

2 个答案:

答案 0 :(得分:1)

尝试更改

if (isset($_POST['index_to_remove']) && $_POST['index_to_remove'] != "") {

if (isset($_POST['index_to_remove']) && ($_POST['index_to_remove'])) {

!empty代替isset

答案 1 :(得分:0)

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) 
    && !isset($_SESSION["minicart"]) || count($_SESSION["minicart"]) < 1) {

这里有一个布尔逻辑问题。这并不妨碍$ _SESSION ['minicart']或$ _SESSION ['cart_array'],如果没有设置它就会被访问。没有设置时访问是什么给你的错误。检查你的否定(!),以及你是否真的想要||那里。

我不明白在取消设置$ _SESSION值之前需要检查的是什么,我没有足够的信息和上下文。因此,我无法将代码复制粘贴到您的代码中。我所能做的就是告诉你为什么你会得到未定义的索引错误。你的if语句,如果没有设置,应该保持$ _SESSION ['cart_array']和$ _SESSION ['minicart']被访问,并不是你想做的。追踪它并检查你的逻辑。如果你不能使它工作,那么通过将其分解为多个嵌套的if语句来简化它。

如果你想要复制和可管理的代码,你需要澄清你做了多少。您在使用count()部分检查了什么,在什么情况下要取消设置变量,以及要取消设置哪些变量。