PHP无法对2D数组元素进行反序列化

时间:2019-03-10 12:18:47

标签: php serialization multidimensional-array

我知道这里也有类似的问题,但是在我看来,这些问题都不是我要解决的问题,或者理解它们需要比我更多的高级知识。

我想做什么:

  • 将$ _POST值存储在数组中
  • 序列化该数组
  • 将数组存储在包含三个相似数组的二维$ _SESSION中
  • 直接在另一页上从$ _SESSION数组中检索数据

我的尝试描述如下

if ($_SERVER["REQUEST_METHOD"] === 'POST') {

    $name = $_POST['name'];
    $surname = $_POST['surname'];
    $age = $_POST['age'];

    $assocArray = ['name' => $_POST['name'], 'surname' => $surname, 'age' => $age];

    $assocArraySerialized = serialize($assocArray);

    $_SESSION += ['etap1' => $assocArraySerialized];

    echo unserialize($_SESSION['etap1']['name']);
}

当我尝试回显我收到的项目时:

  • 警告:字符串偏移量'name'
  • unserialize():特定于的本地主机路径中1个字节的偏移量0处的错误...

我检查了$ _POST是否有效,当我回显$ _POST ['name']时,可以看到所需的值。当我var_dump $ _SESSION时,我可以看到它已正确序列化。

如何从$ _SESSION恢复相同的数据?

1 个答案:

答案 0 :(得分:2)

代替此echo unserialize($_SESSION['etap1']['name']);尝试

$var = unserialize($_SESSION['etap1']);
echo $var['name'];