Php 取消设置特定数组值,该值等于$\u GET

Php 取消设置特定数组值,该值等于$\u GET,php,arrays,session,get,Php,Arrays,Session,Get,我正在使用会话制作一个购物车系统。我需要一种方法来取消设置数组中等于$\u GET值的1/all值。如何做到这一点 我尝试过使用unset()函数,但我不知道在使用$\u GET值时如何格式化它。我看到的所有教程都只显示了如何取消设置脚本中直接指定的内容 编辑:这是我在var\u dumpmy session时得到的结果: 数组(1){ [0]=>数组(13){ [0]=>NULL [1] =>字符串(1)“1” [2] =>字符串(1)“3” [3] =>字符串(1)“2” [4] =>字符串

我正在使用会话制作一个购物车系统。我需要一种方法来取消设置数组中等于$\u GET值的1/all值。如何做到这一点

我尝试过使用unset()函数,但我不知道在使用$\u GET值时如何格式化它。我看到的所有教程都只显示了如何取消设置脚本中直接指定的内容

编辑:这是我在
var\u dump
my session时得到的结果:
数组(1){
[0]=>数组(13){
[0]=>NULL
[1] =>字符串(1)“1”
[2] =>字符串(1)“3”
[3] =>字符串(1)“2”
[4] =>字符串(1)“2”
[5] =>字符串(1)“3”
[6] =>字符串(1)“1”
[7] =>字符串(1)“3”
[8] =>字符串(1)“2”
[9] =>字符串(1)“1”
[10] =>字符串(1)“3”
[11] =>字符串(1)“3”
[12] =>字符串(1)“3”
} 
}

我正在使用以下代码行将项目添加到购物车:

array_push($_SESSION['cart'], $_GET['item']);

其中$\u SESSION['cart']是购物车,$\u GET['item']是添加的项目id

假设您的购物车具有以下结构,您可以简单地使用它来取消设置

$cart = array("cat1" => array("product_1", "product_2"), "cat2" => array("product_3", "product_4"));
unset($cart[$_GET['category']]);

您可以简单地替换它的值

$_SESSION['cart']=array_diff($_SESSION['cart'], $_GET['item']);
编辑

Make sure $_SESSION['cart'], $_GET['item'] have same structure
更新

if(is_array($_GET['item']) && is_array($_SESSION['cart']))
{
foreach($_GET['item'] as $value)
{
  foreach($_SESSION['cart'] as $key=>$val)
  {
    if($value == $val)
    {
    unset($_SESSION['cart'][$key]);
    break;
    }
  }
}
} else { echo "error";}

你试过什么了吗?你能给我们看一下购物车的结构吗?刚刚在问题中添加了结构。你能给我们看一下你的购物车的结构吗?一些代码?只是添加了一些示例,说明如何将项添加到cartwait等待参数#2不是数组。。意味着你的$_GET['item']不是arrayOkay我只是让它工作了。是否可以只删除1个等于$\u GET的值?当然,array\u diff()会输出两个数组之间的差异,那么如何只删除其中的1个?我不明白你在问什么。。它删除了你得到的所有东西。。如果GET只有1个值,则它将被删除。。