PHP:在页面之间传递多维数组?序列化/反序列化不起作用

时间:2010-11-05 04:23:35

标签: php arrays forms serialization xhtml

我正在使用隐藏表单在页面之间传递变量(使用POST)。它适用于标量变量;但是,当我尝试使用我认为通过的数组时,看起来我实际得到的值是“数组”。

我在互联网上搜索寻找解决方案,this看起来很有希望,但我不知道考虑到我的数组包含其他数组是否可行。

然后我看到了the serialize function并希望这可行,但它不起作用。我试过了this fix,但它仍然没有用。这是我在表单页面上的代码:

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

然后在处理页面上:

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

谁能知道为什么这不起作用?是否有修复,或者您是否有其他建议传递数组?

2 个答案:

答案 0 :(得分:3)

我建议使用Sessions。这很容易

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

如果由于某些奇怪的原因不适合你,而不是使用序列化,请使用json_encode和json_decode。

第1页:

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

第2页:

$ info =(array)json_decode(base64_decode($ _ POST ['info']));     的var_dump($信息);

您可能会发现某些信息现在变成了对象。 JSON不支持关联数组(以单词作为键的数组),因此它将它们转换为对象。我已将其类型转换为数组,但这只会在顶层进行类型转换。如果要递归类型转换使用“object2array”。看我的第一个Google搜索结果:

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

答案 1 :(得分:1)

我不能没有更多信息,我建议使用sessions。它会让事情变得更容易。