【问题标题】:PHP save array in cookiePHP在cookie中保存数组
【发布时间】:2015-01-08 13:14:54
【问题描述】:

我想打乱一个数组,然后将其序列化并保存为 cookie。

$random_ads = array(
    '<li><a href="#">Test 1</a></li>',
    '<li><a href="#">Test 2</a></li>',
    '<li><a href="#">Test 3</a></li>'
);
shuffle($random_ads);
$ra_serialized = serialize($random_ads);
setcookie('random_ads', $ra_serialized, time()+3600*24, '/');

然后我尝试使用 unserialized($_COOKIE['random_ads']) 并打印数组,但没有奏效。它什么也不打印。请给我一些想法。我想要的主要是将数组保存在 cookie 中,并在需要时将其取回。谢谢。

【问题讨论】:

  • 它对我来说很好用!你又unserialize()了吗?!所以像这样:print_r(unserialize($_COOKIE["random_ads"])); 这对你有用吗?
  • 我无法复制。我正在运行你的代码,我得到了预期的结果。 PHP-5.5.19.
  • 你的 php 版本是多少?另请向我们展示您使用的完整脚本
  • 我在调试更多之后编辑了我的问题..

标签: php arrays cookies serialization


【解决方案1】:

试试这个

$random_ads = array(
    '<li><a href="#">Test 1</a></li>',
    '<li><a href="#">Test 2</a></li>',
    '<li><a href="#">Test 3</a></li>'
);
shuffle($random_ads);
$ra_serialized = serialize($random_ads);
setcookie('random_ads', $ra_serialized, time()+3600*24, '/');
$getarray = unserialize($_COOKIE['random_ads']);
foreach($getarray as $getarray1)
{
    echo $getarray1;
}

【讨论】:

    【解决方案2】:

    你可以使用 json_encode($random_ads) 或者只是 join('|', $random_ads) 然后在客户端解析它。

    【讨论】:

    • 本题与json无关!
    【解决方案3】:

    浏览了几个小时后,我找到了这个解决方案,并且有效!

    //to safely serialize
    $safe_string_to_store = base64_encode(serialize($multidimensional_array));
    
    //to unserialize...
    $array_restored_from_db = unserialize(base64_decode($encoded_serialized_string));
    

    阅读有关此解决方案的更多信息HERE

    【讨论】:

      猜你喜欢
      • 2012-02-20
      • 2019-12-04
      • 2020-02-12
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      相关资源
      最近更新 更多