【问题标题】:Remove item in $_SESSION PHP删除 $_SESSION PHP 中的项目
【发布时间】: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 变量不是你想的那样。

标签: php arrays session


【解决方案1】:

这是我之前问题的答案:

if(isset($_SESSION["cart_item"])){

                foreach($_SESSION["cart_item"] as $k=>$v) 
                {

                    if($_GET["codetr"] == $_SESSION["cart_item"][$k]["code"]){
                        unset($_SESSION["cart_item"][$k]);
                    }

                    if(empty($_SESSION["cart_item"])){
                        unset($_SESSION["cart_item"]);
                    }
                }
            }

谢谢

【讨论】:

  • 正如我所说,$_SESSION["cart_item"][$k]$v 相同,因此您可以将其写为 $v["code"],除了您自己之外,无法找到其他人。
猜你喜欢
  • 2016-06-29
  • 2012-02-17
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
相关资源
最近更新 更多