PHP中的数组复制

时间:2011-08-21 02:38:55

标签: php

我正在尝试将_POST数组保存到_SESSION数组,以便我可以在网站的其他页面中使用它 当我做的时候

$_SESSION = $_POST;

没用。

以下代码也会出错并且不会复制它。

foreach($_POST as $element){
  $_SESSION[] = $element;
}

2 个答案:

答案 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']);