在 cookie 中存储一个完整的数组
Store a complete array in a cookie
我有以下数组:
Array ( [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 的内容时,这是我得到的:
Array ( [cart] => Array ( [0] => 6 [id] => 2 ) [_ga] => GA1.1.499529088.1424453778 [PHPSESSID] => aj8p5l5ph77n04tab50i83ie34 )
而不是我插入cookie的数组。请协助
我认为您正在寻找序列化:
<?php
$a = array(1 => 'a', 2 => 'b', 3 => 'c');
$b = serialize($a);
var_dump($b); ////Returns this string(42) "a:3:{i:1;s:1:"a";i:2;s:1:"b";i:3;s:1:"c";}"
$c = unserialize($b);
print_r($c); //Return the same thing as $a
试试这段代码,你使用序列化将数组转换为字符串,然后你可以轻松地存储它。然后,反序列化以返回数组!
Cookie 不适用于数组 - 它们只是本地计算机上的字符串。有
$res = serialize($arr);
您可以将数组转换为字符串。 (用 unserialize($arr) 转换回来。)
使用这个:
setcookie('cart_array',implode('|',$cart_array),time()+3600);
使用这个将 cookie 读回数组:
$cart_array = explode('|',$_COOKIE['cart_array'])
虽然我觉得没有必要这么做。但是,只是回答你的问题。
并且请注意Cookie的总长度What is the maximum size of a cookie
使用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']));
我有以下数组:
Array ( [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 的内容时,这是我得到的:
Array ( [cart] => Array ( [0] => 6 [id] => 2 ) [_ga] => GA1.1.499529088.1424453778 [PHPSESSID] => aj8p5l5ph77n04tab50i83ie34 )
而不是我插入cookie的数组。请协助
我认为您正在寻找序列化:
<?php
$a = array(1 => 'a', 2 => 'b', 3 => 'c');
$b = serialize($a);
var_dump($b); ////Returns this string(42) "a:3:{i:1;s:1:"a";i:2;s:1:"b";i:3;s:1:"c";}"
$c = unserialize($b);
print_r($c); //Return the same thing as $a
试试这段代码,你使用序列化将数组转换为字符串,然后你可以轻松地存储它。然后,反序列化以返回数组!
Cookie 不适用于数组 - 它们只是本地计算机上的字符串。有
$res = serialize($arr);
您可以将数组转换为字符串。 (用 unserialize($arr) 转换回来。)
使用这个:
setcookie('cart_array',implode('|',$cart_array),time()+3600);
使用这个将 cookie 读回数组:
$cart_array = explode('|',$_COOKIE['cart_array'])
虽然我觉得没有必要这么做。但是,只是回答你的问题。
并且请注意Cookie的总长度What is the maximum size of a cookie
使用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']));