簡體   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