0

我一直认为 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 应该只保存字符串。这是一个错误吗?

4

2 回答 2

2

这当然不是错误。事实上,它记录在PHP 文档中

您还可以通过在 cookie 名称中使用数组表示法来设置数组 cookie。这具有设置与数组元素一样多的 cookie 的效果,但是当您的脚本接收到 cookie 时,这些值都将放在一个带有 cookie 名称的数组中:

于 2013-06-13T14:13:14.903 回答
1

cookie 值只能是字符串。

当 PHP 将 cookie 解析为$_COOKIE时,某些命名约定(即名称以[]or结尾的 cookie [something])将导致它以数组形式表示它们。

于 2013-06-13T14:13:47.883 回答