【问题标题】:PHP: Pass multidimensional array between pages? Serialize/unserialize not workingPHP:在页面之间传递多维数组?序列化/反序列化不起作用
【发布时间】:2010-11-05 04:23:35
【问题描述】:

我正在使用隐藏表单在页面之间传递变量(使用 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']));

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

【问题讨论】:

  • 我认为我们需要更多关于它是如何“不工作”的信息

标签: php arrays forms serialization xhtml


【解决方案1】:

我建议使用会话。很简单

第 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($info);

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

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

【讨论】:

    【解决方案2】:

    如果没有更多信息,我会建议使用 sessions。这会让事情变得容易得多。

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 2011-08-11
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      相关资源
      最近更新 更多