Php 为什么session_destroy无法取消设置当前会话值

Php 为什么session_destroy无法取消设置当前会话值,php,session,Php,Session,我知道使用unset()或$\u SESSION=array()可以取消设置$\u SESSION值 但是我仍然想知道为什么session\u destroy()不能取消设置$\u session值,那么session\u destroy()到底做了什么 何时使用会话\u destroy() 使用unset()后是否需要调用session\u destroy() session\u destroy()销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cook

我知道使用
unset()
$\u SESSION=array()
可以取消设置$\u SESSION值 但是我仍然想知道为什么
session\u destroy()
不能取消设置$\u session值,那么
session\u destroy()
到底做了什么

何时使用
会话\u destroy()


使用
unset()
后是否需要调用
session\u destroy()

session\u destroy()
销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie

因此,
session\u destroy()
将销毁实际存储的数据(filesystem/memcached/Redis/which,具体取决于已配置的会话处理程序),但相同的数据仍将保留在
$\u session
超全局中的内存中,直到您使用
unset()显式地将其取消设置
$\u会话=[]

因此,是的,您必须在使用
unset()
后调用
session\u destroy()
,如
session\u destroy()
手册页面上的示例所示:


最后,回答您的主要问题“为什么session_destroy不能取消当前session值php”:因为这不是这个函数的用途。手册说明了一切。只要仔细阅读,您就会了解会话清理的所有内容。

会话的输出是什么?抱歉,问题只是关于会话的销毁,而不是会话的取消。我将更改标题
session_start();
$_SESSION['name'] = 'Sam';
echo $_SESSION['name'];//Sam
session_destroy();
echo $_SESSION['name'];//Sam