从foreach循环PHP中取消设置会话变量

时间:2016-10-26 23:10:28

标签: php session foreach

我的购物车中的产品由ajax存储并设置为会话。 从cart_functions.php查看我的代码(这里是购物车中按钮的功能)。

if (isset($_GET['action'])) {
  $action = $_GET['action'];   //get button action name
  $prod   = $_GET['prod_id'];  // id of the product
  $prodname = 'product_'.$prod;// name of the product



 switch ($action) {
   case 'add':
       $result = add_prod($prod, $prodname);
   break;
  ///rest of switch....(not important for now)

这是将产品添加到会话

的功能
function add_prod($prod, $prodname){
  //add function
$_SESSION[$prodname] = 1;
return ['result'=>'success'];
}

此会话的名称是这样的 - > $_SESSION['product_123']等。

好的,现在我想取消所有的$_SESSION[$prodname]。 在其他页面$_SESSION[$prodname]$_SESSION['product_123']。 因此,在我的购物车中,我有多个$_SESSION[$prodname]我想在客户提交订单时取消设置。 我怎么能得到所有$_SESSION['product_123'],$_SESSION['product_1234']...and so on

我不知道这是否有帮助,但为了计算我的产品,我使用的代码来自我在这里的帮助...看

$product_count = count(array_filter(array_keys($_SESSION), function($x) {
            return substr($x, 0, 8) == 'product_';
            }));

3 个答案:

答案 0 :(得分:2)

在您希望取消设置特定会话元素的位置,您是否尝试过

unset($_SESSION[$product]);

因为这应该是所有需要的。我搜索了你的代码,却找不到你想要取消任何东西的地方。

答案 1 :(得分:1)

尝试session_destroy()创建一个类似reset.php的新文件,你把session_destroy()这个擦除所有会话肯定

答案 2 :(得分:1)

你最好使用数组

$_SESSION['products'][$id]

它允许您轻松遍历您的产品,您可以通过

重置它

unset($_SESSION['products'])