PHP: передать многомерный массив между страницами? Сериализация / десериализация не работает - PullRequest
0 голосов
/ 05 ноября 2010

Я использую скрытые формы для передачи переменных между страницами (используя POST).Работает нормально для скалярных переменных;однако, когда я пытаюсь использовать массивы, которые я предположительно передал, похоже, что значение, которое я на самом деле получаю, это «Массив».

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

Затем я увидел функцию сериализации и надеялся, что это может сработать, ноне работает.Я пробовал это исправление , но оно все еще не работает.Вот мой код на странице формы:

$sendInfo = base64_encode(serialize($info));
echo '<input type="hidden" name="info" id="info" value="'.$sendInfo.'"/>';

Затем на странице обработки:

$info = unserialize(base64_decode($_POST['info']));

Может кто-нибудь знать, почему это не работает?Есть ли исправление, или у вас есть другая рекомендация для передачи массива?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

Я рекомендую использовать сеансы.Это просто

Страница 1:

session_start(); //at the top of each page
$_SESSION['info'] = $info;

Страница 2:

  session_start(); //at the top of each page
    print_r($_SESSION['info']);

, если это не работает для вас по какой-то странной причине, вместо использованияserialise, используйте json_encode и json_decode.

Страница 1:

$sendInfo = base64_encode(json_encode($info));
echo '<input type="hidden" name="info" id="info" value="'.$sendInfo.'"/>';

Страница 2:

$ info = (массив)]));var_dump ($ info);

Вы можете обнаружить, что часть информации теперь превратилась в объекты.JSON не поддерживает ассоциативные массивы (со словами в качестве ключа), поэтому он превращает их в объекты.Я ввел его в массив, но это произойдет только на верхнем уровне.Если вы хотите рекурсивно типизировать, используйте «object2array».Смотрите мой первый результат Google:

http://www.jonasjohn.de/snippets/php/array2object.htm

1 голос
/ 05 ноября 2010

Я не могу помочь без дополнительной информации, я могу рекомендовать использовать сессий . Это сделает все намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...