我有以下数组:
数组([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的数组。请协助
答案 0 :(得分:1)
我认为你正在寻找序列化:
c&a@fakedomain.com
试用这段代码,使用serialize将数组转换为字符串,然后就可以轻松存储它。然后,你反序列化以恢复数组!
答案 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']));