是否有一种方法来取消设置每个会话变量,不包括所需的变量(s)


Is there a way to unset every session variables excluding desired variable(s)?

我有一个相当基本的购物车设置,我的"clear cart"函数运行以下PHP,目的是清除购物车而不丢失需要保留的会话数据(登录用户名/电子邮件/等)。

我的代码为我想要的工作(只是玩弄PHP),但它似乎不是很有效,我想知道是否有一种更简单的方法来取消除特定会话变量之外的一切。如果你只想保留2个变量,想要删除9个变量,那么似乎必须有一种替代方法来列出你想要删除的所有内容。

一种取消设置除用户数据外的所有内容的方法,无论是否排序。

<?php
 session_start();
 unset
(
    $_SESSION['pcode1'],  
    $_SESSION['uprice1'],  
    $_SESSION['quantity1'],
    $_SESSION['pcode2'],  
    $_SESSION['uprice2'], 
    $_SESSION['quantity2'],
    $_SESSION['pcode3'], 
    $_SESSION['uprice3'],  
    $_SESSION['quantity3'] 
); 
header('Location: cart.php'); 
exit; 
?>

Tl,博士是否有一种方法可以取消所有会话数据,除了特定的变量

foreach($_SESSION as $kill=>$v){
    if (!in_array($kill,ARRAY OF WANTED KEYS))
      {unset ($_SESSION[$kill]);}
    }

演示:http://codepad.viper - 7. - com/t8hu4l

从外观上看,取消一组特定$_SESSION变量的唯一方法是手动取消每个变量的设置。

另一种选择是存储您想要的两个变量,然后运行unset($_SESSION),然后使用旧数据重新设置新变量。如:

session_start();
$tmp1 = $_SESSION['variable1'];
$tmp2 = $_SESSION['variable2']
unset($_SESSION); 
$_SESSION['variable1'] = $tmp1;
$_SESSION['variable2'] = $tmp2;