如何取消设置 PHP 中作为数组的 _SESSION 变量

Posted

技术标签:

【中文标题】如何取消设置 PHP 中作为数组的 _SESSION 变量【英文标题】:How to unset a _SESSION Variable that is an Array in PHP 【发布时间】:2012-04-08 09:20:45 【问题描述】:

我有一个实际上是一个数组的会话变量。我想删除整个数组变量,但无法实现。

_SESSION VAR

$_SESSION['auth']['id']
$_SESSION['auth']['username']
$_SESSION['auth']['role']

我尝试了unset($_SESSION['auth']),但它不起作用。我是否需要使用 unset() 单独取消设置每个 2 级数组?

谢谢。

【问题讨论】:

unset() 确实有效。您的问题一定出在其他地方。 就像 Brad 所说,未设置 必须 起作用。您是否尝试将 $_SESSION['auth'] 设置为 null ? 好吧,完全是我的错。长话短说...我构建了一个例程,可以从持久性 cookie 中自动加载会话变量。在我注销期间,我试图删除 cookie,但失败了。随后,我的 _SESSION 变量被我的后端脚本重建——所以它在那里工作。 unset() 实际上也在工作。它只是没有有效地删除 cookie。很抱歉给您带来麻烦和愚蠢的问题。但是感谢大家的参与。 【参考方案1】:

也许你以前没有session_start()

【讨论】:

【参考方案2】:

unset 应该可以正常工作:S 正如 Artjom Kurapov 也指出的那样,它可能是由于会话未启动所致。

但无论如何,你有没有尝试过这样做

$_SESSION['auth'] = array();

或者,如果您根本不关心会话,您可以使用 session_unsetsession_destroy

【讨论】:

我认为您的意思是在此处使用单个“=”。否则你只是在比较它。 哈哈,哈哈,完全错过了 ^^ 猜猜这是我试图给出快速答案的惩罚:P。但是感谢指出@showerhead,它现在被编辑为正确的东西。

以上是关于如何取消设置 PHP 中作为数组的 _SESSION 变量的主要内容,如果未能解决你的问题,请参考以下文章

PHP 类取消设置/清除私有数组变量

如何在php中取消设置空数组?

如何从 PHP 数组中取消设置数字索引元素?

如何在php中取消设置数组元素匹配索引?

PHP - 在foreach循环中取消设置数组元素[重复]

取消设置具有相似名称的所有会话变量