PHP中的数组复制


Array copying in PHP

我试图将我的_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']);