繁体   English   中英

在php中完成删除购物车商品时,会话数组未取消设置

[英]Session array is not unsetting when remove cart item is done in php

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

$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来设置未设置的$ _SESSION [“ items”]有何意义,

这是什么问题,如果您要这样做:

 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;
    }
}

让我知道是否错过了什么。

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

例:

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';

        }
    }        
 }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM