我试图将我的_POST数组保存到_SESSION数组,以便我可以在网站的其他页面中使用它当我做
$_SESSION = $_POST;
它没有工作。
下面的代码也给出了一个错误,没有复制它。
foreach($_POST as $element){
$_SESSION[] = $element;
}
$_SESSION
不能处理数字键;必须是关联数组。例如,如果你做
$_SESSION[] = "foo";
就像你在foreach-loop中做的那样,它将创建一个新的数字键,就像在任何其他数组中一样(例如$_SESSION[0] == "foo"
), 但是 PHP将在保存会话时跳过该键。你会得到一个"通知"级别的警告,比如"跳过数字键0"。因此,下次读取$_SESSION
数组时,它将不包含任何数字键。
所以必须使用字符串索引,如:
$_SESSION['POST'] = $_POST;
应该可以。
您还应该能够执行$_SESSION = $_POST
并覆盖整个$_SESSION
数组。说不出为什么不行。但我也不明白你为什么想这么做。如果您曾经想使用$_SESSION
的任何其他(如,实际会话数据),你不能让你的代码随机覆盖整个数组与张贴数据在这里和那里。最好像上面那样使用字符串索引来存储post数据。
session_start();
if(!$_SESSION['POST']) $_SESSION['POST'] = array();
foreach ($_POST as $key => $value) {
$_SESSION['POST'][$key] = $value;
}
var_dump($_SESSION['POST']);