Php 会话变量存在奇怪的unset()问题
我有一个函数,它通过一个键获取会话变量,然后将其重新分配给一个变量。我取消设置会话变量并返回我设置的变量。由于某些原因,它正在返回“”。如果我移除未设置的,它就会工作 这将返回nullPhp 会话变量存在奇怪的unset()问题,php,session,Php,Session,我有一个函数,它通过一个键获取会话变量,然后将其重新分配给一个变量。我取消设置会话变量并返回我设置的变量。由于某些原因,它正在返回“”。如果我移除未设置的,它就会工作 这将返回null if(isset($_SESSION[$key])) { $session_variable = $_SESSION[$key]; var_dump($session_variable); unset($_SESSION[$key]);
if(isset($_SESSION[$key])) {
$session_variable = $_SESSION[$key];
var_dump($session_variable);
unset($_SESSION[$key]);
var_dump($session_variable);
return $session_variable;
}
return '';
如果省略了unset,则返回正确的输出
if(isset($_SESSION[$key])) {
$session_variable = $_SESSION[$key];
var_dump($session_variable);
// unset($_SESSION[$key]);
var_dump($session_variable);
return $session_variable;
}
return '';
我不明白unset为什么要删除变量$session\u
编辑
会话变量previous的设置如下
$_SESSION['action'] = ['message' => 'bla', 'status' => 'success'];
(new Request)->getFlashedSessionVar('action'); //For testing
函数的调用方式如下
$_SESSION['action'] = ['message' => 'bla', 'status' => 'success'];
(new Request)->getFlashedSessionVar('action'); //For testing
这取决于
$\u会话[$key]
实际上是什么。
根据PHP文档:PHP中通常的赋值行为的一个例外是对象,在PHP5中通过引用赋值。可以通过克隆关键字显式复制对象。
这意味着您可以通过引用进行赋值,从而取消设置同一对象
请阅读此处:这取决于
$\u会话[$key]
的实际情况。
根据PHP文档:PHP中通常的赋值行为的一个例外是对象,在PHP5中通过引用赋值。可以通过克隆关键字显式复制对象。
这意味着您可以通过引用进行赋值,从而取消设置同一对象
请阅读这里:我刚刚用原始PHP测试了您的代码。这对我来说很好 代码
<?php
session_start();
$key = 'action';
$_SESSION[$key] = [ 1 ,2] ;
if(isset($_SESSION[$key])) {
$session_variable = $_SESSION[$key];
var_dump($session_variable);
unset($_SESSION[$key]);
var_dump($session_variable);
return $session_variable;
}
return '';
?>
我刚刚用原始PHP测试了您的代码。这对我来说很好 代码
<?php
session_start();
$key = 'action';
$_SESSION[$key] = [ 1 ,2] ;
if(isset($_SESSION[$key])) {
$session_variable = $_SESSION[$key];
var_dump($session_variable);
unset($_SESSION[$key]);
var_dump($session_variable);
return $session_variable;
}
return '';
?>
奇怪的是,当添加unset时,两个var_转储都不会输出任何内容。即使var_dump出现在unset函数之前。$_SESSION[$key]是一个标准的赋值,例如$_SESSION['action']=[1,2]奇怪的是,添加unset时,两个var_转储都不输出任何内容。即使var_dump出现在unset函数之前。$_SESSION[$key]是一个标准的赋值。例如$_SESSION['action']=[1,2]您的代码运行良好,没有为我省略未设置的会话。您使用的是任何PHP框架还是纯本机PHP?我使用的是内部遗留自定义框架,但大部分是原始PHP。我搜索了另一个未设置的函数,但其中一个不存在,因此我知道它没有被覆盖。我也有错误,所以应该能够看到,如果有什么是错误的你的代码工作正常,没有省略未设置的会话为我。你使用任何PHP框架或只是原生PHP?我使用的是一个内部遗留自定义框架,但大部分是原始PHP。我搜索了另一个未设置的函数,但其中一个不存在,因此我知道它没有被覆盖。我也有错误,所以应该能够看到,如果有什么是错误的感谢,不知道是什么原因,然后。将不得不潜得更深。谢谢,汉克斯,我不知道是什么原因造成的。将不得不潜得更深。谢谢