2010-03-26 106 views
0

如果我將項目添加到所述$ _COOKIE數組作爲這樣的第一個項目

setcookie("favorites[$deletekey]", "", time()+3600); 

除了第一個加入使這不起作用:

setcookie("favorites[0]", "", time()+3600*24); 

如何刪除第一個和讓別人完好無損?

回答

0

如果你知道數組是如何工作的,你會知道0實際上是一個關鍵。

$myarray = array("key" => "value", 1 => "one"); 

$myarray[0]不存在,因爲該鍵沒有定義。此數組中僅存在元素$myarray['key']$myarray[1]。您不能將$myarray['key']作爲數組中的第一項,因爲0被看作是數組的鍵,並且沒有爲該鍵定義的值。

但是,您可以使用PHP's array_values() function來創建一個值的數組(它基本上刪除鍵)並以這種方式引用它們,但是使用Cookie我不明白這是如何使用的。

0

我可以從$ _COOKIE [收藏]數組這樣刪除的任何項目:

否 - 當響應發送回瀏覽器應該覆蓋當前值。

如果你想刪除的項目從餅乾數組做到這一點:如果你想刪除瀏覽器設置cookie具有相同名稱的Cookie

unset($_COOKIE['favorites']); 

(和路徑,域),但過去的失效日期。

有沒有這樣的事情作爲cookie arry客戶端 - 你混淆PHP的語法用於添加項目數組與HTTP如何工作。這可能是當請求返回時,PHP將從名爲'favorites []'的cookie創建一個數組,但客戶端上沒有這樣的數組 - 只有一個值。

setcookie("favorites[]", "value", time()+3600); 

創建一個名爲cookie的「最愛[]」這就是爲什麼它沒有被改變:

setcookie("favorites[0]", "", time()+3600*24); 

雖然這將是有效的通過追加(或嵌入)的整數爲創造新的餅乾字符串,你應該避免使用方括號。

C.