【发布时间】:2019-03-19 01:49:58
【问题描述】:
我尝试删除 $_SESSION['cart_item'] 中的元素,但没有成功,这是我将记录插入数组的代码
$itemArray = array($itemcode1=>array('barcode'=>$_POST["barcode"],'code'=>$_POST["code"],'name'=>$_POST['itemname'], 'qty'=>$_POST["qty"],'cogs'=>$_POST["cogs"],'disc1'=>$disc1,'disc2'=>$disc2,'disc3'=>$disc3,'tglexp'=>$tglexp));
if(!empty($_SESSION["cart_item"]))
{
if(in_array($itemcode1,$_SESSION["cart_item"]))
{
foreach($_SESSION["cart_item"] as $k => $v)
{
if($itemcode == $k)
{
$_SESSION["cart_item"][$k]["qty"] = $_POST["qty"];
$_SESSION["cart_item"][$k]["cogs"] = $_POST["cogs"];
//$_SESSION["cart_item"][$k]["discitem"] = $_POST["discitem"];
//$_SESSION["cart_item"][$k]["unit"]= $productByCode[0]["itemunit"];
}
}
} else
{
$_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
}
} else
{
$_SESSION["cart_item"] = $itemArray;
}
}
这是从会话中删除元素的代码
if(!empty($_SESSION["cart_item"]))
{
foreach($_SESSION["cart_item"] as $k => $v)
{
if($_GET["codetr"] == $k){
unset($_SESSION["cart_item"][$k]);
}
if(empty($_SESSION["cart_item"])){
unset($_SESSION["cart_item"]);
}
}
}
谢谢
【问题讨论】:
-
也许
$_GET["codetr"] === $v是正确的,或者如果不是,也许它永远不会命中并且永远不会取消$_["cart_item"]内的元素,您必须跟踪您的变量。 -
更改变量后无法工作
-
错误是什么?请分享错误以获得进一步的帮助。在
if($_GET["codetr"] == $k)中将$k更改为$v根本不会出错。 -
检查
isset()然后unset -
与任何故障排除一样,您可以从损坏的地方开始,或者从工作的地方开始......为了证明未设置正在执行:在右括号后插入
die('works to here')foreach循环,并在unset($_SESSION["cart_item"][$k]);之前插入print "Matched 'codetr'";如果你明白了,你知道未设置确实是你的问题。如果没有,请看其他地方。我真的怀疑 GET 变量不是你想的那样。