Php 如何取消设置具有特定前缀的会话变量
可能重复:Php 如何取消设置具有特定前缀的会话变量,php,session-variables,Php,Session Variables,可能重复: 我有一些以“汽车”开头的会话变量 比如 我想知道只取消设置/删除/清空那些以cars作为前缀的会话变量的代码,如上所述 到目前为止,我已经做到了这一点,但不知道有什么代码可以让他们不安 foreach($_SESSION as $key => $value) { if (strpos($key, 'cars_') === 0) { // Need to delete / unset the session variables } }
我有一些以“汽车”开头的会话变量 比如 我想知道只取消设置/删除/清空那些以cars作为前缀的会话变量的代码,如上所述 到目前为止,我已经做到了这一点,但不知道有什么代码可以让他们不安
foreach($_SESSION as $key => $value)
{
if (strpos($key, 'cars_') === 0)
{
// Need to delete / unset the session variables
}
}
请帮我做一下只需使用
取消设置
foreach($_SESSION as $key => $value)
{
if (strpos($key, 'cars_') === 0)
{
unset($_SESSION[$key]);
}
}
你差点就成功了
foreach($_SESSION as $key => $value)
{
if (strpos($key, 'cars_') === 0)
{
unset($_SESSION[$key]); //add this line
}
}
这里有一些解释。在foreach
中,您将$key
设置为一个变量,用于为每次迭代保存$\u会话
数组的键
,它对$value
的作用相同
参考:
会话\u取消注册-从当前会话中取消注册全局变量 从PHP 5.3.0开始,此函数已被弃用。非常不鼓励依赖此功能 会话\u取消设置-释放所有会话变量 不要使用unset($\u SESSION)取消设置整个$\u会话,因为这将禁用通过$\u SESSION superglobal注册会话变量 会话\u销毁-销毁注册到会话的所有数据使用PHP,您可以使用“销毁”变量。因此,一旦您确信密钥符合您的标准,您可以:
unset($_SESSION($key));
好吧,我很高兴看到它仍然能够忽略显而易见的事实 有很多方法可以通过循环和各种各样的东西来实现这一点,但是正确的方法是使用子数组
cars
,您可以轻松地一次性销毁它
因此,与其创造
$_SESSION["cars_registration"];
$_SESSION["cars_make"];
等等,您将创建:
$_SESSION["cars"]["registration"];
$_SESSION["cars"]["make"];
因此,当您要取消设置时,只需执行以下操作:
unset($_SESSION["cars"]);
$\u SESSION
可以像任何其他数组一样以多维结构保存数据-它不需要是一个扁平的值集合。未设置($\u SESSION[$key])有什么问题吗?使用=
有很好的理由<如果未找到指针,则code>strpos返回FALSE
strpos('cats_registration'、'cars_')
将返回FALSE
和FALSE==0
,并且在不应该的时候将密钥删除。@SalmanA刚刚修改了我的答案,谢谢you@Mahan-thnks对于帮助buddy+1,我在想,为什么不让汽车成为一个阵列呢。
unset($_SESSION["cars"]);