在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';
}
}
}
尝试这种方法,可能会有所帮助