Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何取消设置具有特定前缀的会话变量_Php_Session Variables - Fatal编程技术网

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"]);