我正在使用隐藏表单在页面之间传递变量(使用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']));
谁能知道为什么这不起作用?是否有修复,或者您是否有其他建议传递数组?
答案 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搜索结果:
答案 1 :(得分:1)
我不能没有更多信息,我建议使用sessions。它会让事情变得更容易。