Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中删除购物车项目时,会话数组未取消设置_Php_Ajax_Xml - Fatal编程技术网

在php中删除购物车项目时,会话数组未取消设置

在php中删除购物车项目时,会话数组未取消设置,php,ajax,xml,Php,Ajax,Xml,我编写了以下代码,用于在单击“删除购物车项目”按钮时取消设置会话数组: $i=0; foreach ($_SESSION["items"] as $cart_itm) //loop through session array var { //echo count($_SESSION['items']); if($cart_itm["id"] == $item_Id){ //item id is equal if

我编写了以下代码,用于在单击“删除购物车项目”按钮时取消设置会话数组:

$i=0;
    foreach ($_SESSION["items"] as $cart_itm) //loop through session array var
    {           
    //echo count($_SESSION['items']);
        if($cart_itm["id"] == $item_Id){ //item id is equal
            if(count($_SESSION['items']) == 1)
            {
            //echo "count1";
                unset($_SESSION['items']);
                $empty = 'Y';
            }
            else
            {

            echo $i."--";
            echo $cart_itm["id"];
            echo "------";
                unset($_SESSION['items'][$i]);
                $empty = 'N';

            }
        }
        $i++;
     }
但是,当第一行单击“删除购物车项目”时,它会取消设置购物车表中的第一行。但是,当第二行单击“删除购物车项目”时,数组不会取消设置,项目也不会从购物车中删除。 此外,如果我单击第三行的“删除购物车”项目,第二行将被删除,而不是第三行


请让我知道发生这种情况的原因。

仅将foreach用于未设置的$\u会话[“项目”]

有什么问题,如果你这样做:

 if(isset($_SESSION["items"]) && count($_SESSION["items"])>0)
 unset($_SESSION["items"]);
谢谢

试试这个方法

for($i=0; $i < count($_SESSION["items"]); $i++)
{           
    if($_SESSION["items"][$i] == $item_Id){
        unset($_SESSION['items'][$i]);
        break;
    }
}
for($i=0;$i

如果我遗漏了什么,请告诉我。

此问题可能是由于循环向未设置所需会话值传递的密钥不正确所致。 您可以简单地使用KEY=>VALUE对,而不是使用$i++方法

例如:

foreach ($_SESSION["items"] as $sessionKey=>$cart_itm) //loop through session array var
{           
    //echo count($_SESSION['items']);
    if($cart_itm["id"] == $item_Id){ //item id is equal
        if(count($_SESSION['items']) == 1)
        {
            //echo "count1";
            unset($_SESSION['items']);
            $empty = 'Y';
        }
        else
        {

            echo $sessionKey."--";
            echo $cart_itm["id"];
            echo "------";
            unset($_SESSION['items'][$sessionKey]);
            $empty = 'N';

        }
    }        
 }
尝试这种方法,可能会有所帮助