我正在尝试这样做:
setCookie('visitor', array(0 => 'one', 1 => 'two'), time()+3600, COOKIEPATH, COOKIE_DOMAIN, false);
但我无法让它发挥作用。 php参考解释“$ value as string [optional]”(据我所知)应该接受一个字符串数组作为参数。如果我对php参考(字符串[可选])的理解错误,请帮助我实现与此类似的东西或纠正我。
这是setcookie函数声明:
setcookie($name, $value, $expire, $path, $domain, $secure, $httponly);
答案 0 :(得分:4)
改为使用serialize(array(0 => 'one', 1 => 'two'))
。
再次检索数组时使用unserialize()
。
并且没有:如果php手册说函数想要一个字符串......那么它们意味着一个字符串。不是字符串数组。
也许你被[可选]愚弄了?方括号没有任何意义。整个“[可选]”只是意味着可以在没有此参数的情况下调用该函数。
答案 1 :(得分:1)
如果setcookie()
函数确实允许你重载类型,它会通过将数组传递给循环来实现。由于它不支持数组,我在函数外部使用foreach循环。
foreach (array(0 => 'one', 1 => 'two') as $key => $value) {
setcookie('visitor[' . $key . ']', $value, time()+3600, COOKIEPATH, COOKIE_DOMAIN, false);
)
var_dump($_COOKIE);
这导致......
array(1) {
["visitor"]=>
array(2) {
[0]=>
string(3) "one"
[1]=>
string(3) "two"
}
}