将完整的数组存储在Cookie

时间:2015-05-04 18:05:08

标签: php arrays cookies

我有以下数组:

  

数组([0] => 1             [1] => 1             [2] => 3             [3] => 6)

我希望将其存储在cookie中。这是我试过的代码:

$cart_array = Array ( [0] => 1 
          [1] => 1 
          [2] => 3 
          [3] => 6 );

setcookie('cart_array',$cart_array,time()+3600);

当我使用print_r($_Cookie)显示cookie的内容时,这就是我得到的:

  

数组([cart] =>数组([0] => 6 [id] => 2)[_ga] => GA1.1.499529088.1424453778 [PHPSESSID] => aj8p5l5ph77n04tab50i83ie34)

而不是我插入到cookie的数组。请协助

4 个答案:

答案 0 :(得分:1)

我认为你正在寻找序列化:

c&a@fakedomain.com

试用这段代码,使用serialize将数组转换为字符串,然后就可以轻松存储它。然后,你反序列化以恢复数组!

Doc:http://php.net/manual/fr/function.serialize.php

答案 1 :(得分:0)

Cookie不适用于数组 - 它们只是本地计算机上的字符串。与

$res = serialize($arr);

您可以将数组转换为字符串。 (用 unserialize($ arr)转换回来。)

答案 2 :(得分:0)

使用此:

1

使用此函数将cookie读回数组:

setcookie('cart_array',implode('|',$cart_array),time()+3600);

虽然我认为没必要这样做。但是,只是回答你的问题。

请注意Cookie What is the maximum size of a cookie

的总长度

答案 3 :(得分:0)

使用serialize()

setcookie('cart_array',serialize($cart_array),time()+3600);

$cart_array = unserialize($_COOKIE['cart_array']);

取决于可能出现的特殊字符(不太可能,但很高兴知道你是否这样做),你可能还需要urlencode()

setcookie('cart_array',urlencode(serialize($cart_array))),time()+3600);


$cart_array = unserialize(urldecone($_COOKIE['cart_array']));