我一直认为cookie可能只包含字符串,但PHP处理cookie的方式,也可以在cookie中存储数组(我不是在讨论序列化数组,而是本机数组)。您需要做的就是:
setcookie('a[1]', 'a');
setcookie('a[2]', 'b');
var_dump($_COOKIE);
以上将产生以下内容(记得执行两次):
array(1) {
["a"]=>
array(2) {
[1]=>
string(1) "a"
[2]=>
string(1) "b"
}
}
这里发生了什么?很明显,我们设法将一个数组存储到一个cookie,该cookie应该只包含字符串。这是一个错误吗?
答案 0 :(得分:2)
这当然不是一个错误。事实上,它在PHP Documentation
中有记载您还可以在Cookie名称中使用数组表示法设置数组Cookie。这样可以设置与数组元素一样多的cookie,但是当脚本收到cookie时,这些值都将放在一个带有cookie名称的数组中:
答案 1 :(得分:1)
Cookie值只能是字符串。
当PHP将cookie解析为$_COOKIE
时,某些命名约定(即名称以[]
或[something]
结尾的cookie)将使它们将它们表示为数组。