PHP-десериализация элемента 2D-массива не работает должным образом - PullRequest
1 голос
/ 10 марта 2019

Я знаю, что здесь были некоторые похожие вопросы, но ни один из них не кажется мне точно тем, в чем заключается моя проблема, или для их понимания требовалось более глубокое знание, чем у меня.

Что я пытаюсь сделать:

  • сохранить значения $ _POST в массиве
  • сериализовать этот массив
  • сохранить массив в 2D $ _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 (): ошибка по смещению 0 из 1 байта в определенном пути к локальному хосту ...

Я проверил, работает ли $ _POST, и когда я повторяю $ _POST ['name'], я вижу желаемое значение.Когда я var_dump $ _SESSION, я вижу, что он был сериализован правильно.

Как я могу получить те же данные восстановления из $ _SESSION?

1 Ответ

2 голосов
/ 10 марта 2019

Вместо этого echo unserialize($_SESSION['etap1']['name']); попробуйте

$var = unserialize($_SESSION['etap1']);
echo $var['name'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...