取消设置等于$ _GET的特定数组值

时间:2014-10-25 20:06:55

标签: php arrays session get

我正在使用会话制作购物车系统。我需要一种方法来取消数组中的1 /所有值,它等于$ _GET的值。怎么办呢?

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

编辑:当我var_dump我的会话时,这就是我得到的: array(1) { [0]=> array(13) { [0]=> NULL [1]=> string(1) "1" [2]=> string(1) "3" [3]=> string(1) "2" [4]=> string(1) "2" [5]=> string(1) "3" [6]=> string(1) "1" [7]=> string(1) "3" [8]=> string(1) "2" [9]=> string(1) "1" [10]=> string(1) "3" [11]=> string(1) "3" [12]=> string(1) "3" } }

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

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

$ _SESSION ['cart']是购物车,$ _GET ['item']是添加的商品ID

2 个答案:

答案 0 :(得分:1)

您可以简单地替换其值

$_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";}

答案 1 :(得分:0)

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

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