我正在尝试将_POST数组保存到_SESSION数组,以便我可以在网站的其他页面中使用它 当我做的时候
$_SESSION = $_POST;
没用。
以下代码也会出错并且不会复制它。
foreach($_POST as $element){
$_SESSION[] = $element;
}
答案 0 :(得分:3)
$_SESSION
无法处理数字键;它必须是一个关联数组。即如果你这样做
$_SESSION[] = "foo";
和你在foreach循环中一样,它会创建一个新的数字键,就像在任何其他数组中一样(例如$_SESSION[0] == "foo"
),但是 PHP会在保存时跳过该键会话。您会收到“通知”级别警告,例如“正在跳过数字键0”。因此,下次读取$_SESSION
数组时,它将不包含任何数字键。
所以你必须使用字符串索引,例如:
$_SESSION['POST'] = $_POST;
这应该有效。
您还应该能够执行$_SESSION = $_POST
并覆盖整个$_SESSION
数组。不能说为什么那不起作用。但我不明白你为什么要这样做。如果您希望将$_SESSION
用于其他任何事情(例如,实际的会话数据),则不能让您的代码随机覆盖整个数组,并使用帖子数据。最好只使用上面的字符串索引来存储帖子数据。
答案 1 :(得分:1)
session_start();
if(!$_SESSION['POST']) $_SESSION['POST'] = array();
foreach ($_POST as $key => $value) {
$_SESSION['POST'][$key] = $value;
}
var_dump($_SESSION['POST']);