如果我将项目添加到$ _COOKIE数组中:
setcookie("favorites[]", "value", time()+3600);
我可以删除$ _COOKIE [favorites]数组中的任何项目,如下所示:
setcookie("favorites[$deletekey]", "", time()+3600);
除了添加的第一个,所以这不起作用:
setcookie("favorites[0]", "", time()+3600*24);
如何删除第一个并保留其他内容?
答案 0 :(得分:0)
如果你知道数组如何工作,你就会知道0实际上是一个关键。
$myarray = array("key" => "value", 1 => "one");
$myarray[0]
不存在,因为未定义该键。此数组中仅存在元素$myarray['key']
和$myarray[1]
。您不能将$myarray['key']
作为数组中的第一项引用,因为0被视为数组的键,并且没有为该键定义值。
然而,您可以使用PHP's array_values()
function创建值的数组(它基本上删除了键)并以这种方式引用它们,但是使用cookie我不知道这有什么用处。
答案 1 :(得分:0)
我可以删除$ _COOKIE [favorites]数组中的任何项目,如下所示:
否 - 当响应被发送回浏览器时,它应该覆盖当前值。
如果要从cookies数组中删除项目,请执行以下操作:
unset($_COOKIE['favorites']);
如果您想在浏览器上删除cookie,请使用相同的名称(以及路径和域名)设置cookie,但过去的过期日期。
没有cookie arry客户端这样的东西 - 你会混淆PHP的语法,用于将项目添加到数组中,以及HTTP的工作方式。可能是当请求返回时,PHP将从名为'favorites []'的cookie创建一个数组,但客户端上没有这样的数组 - 只有一个值。
setcookie("favorites[]", "value", time()+3600);
创建一个名为'favorites []'的cookie,这就是为什么它不会改变:
setcookie("favorites[0]", "", time()+3600*24);
虽然通过将整数附加(或嵌入)到字符串中来创建新的Cookie是有效的,但应避免使用方括号。
下进行。