2015-04-16 6 views
2

Я знаю, как установить PHP-куки в массиве, но могу ли я очистить его без цикла?
Например я устанавливаю эти четыре печеньяОчистить массив печенья PHP

// set the cookies 
setcookie("cookie[four]", "cookiefour"); 
setcookie("cookie[three]", "cookiethree"); 
setcookie("cookie[two]", "cookietwo"); 
setcookie("cookie[one]", "cookieone"); 

// after the page reloads, print them out 
if (isset($_COOKIE['cookie'])) { 
    foreach ($_COOKIE['cookie'] as $name => $value) { 
     $name = htmlspecialchars($name); 
     $value = htmlspecialchars($value); 
     echo "$name : $value <br />\n"; 
    } 
} 

ВЫВОД:
четыре: cookiefour
три: cookiethree
два: cookietwo
один: cookieone

Чтобы очистить файлы cookie, я использую fo llowing петля

if (isset($_COOKIE['cookie'])) { 
    foreach ($_COOKIE['cookie'] as $name => $value) { 
     setcookie ("cookie[".$name."]", "", time() - 1); 
    } 
} 

Есть ли способ, которым я мог бы очистить печенье без цикла? Заранее спасибо

ответ

3

Нет, вам в значительной степени нужно пройти через существующие куки-файлы, поскольку способ удаления/истечения срока действия cookie, как и у вас в коде с помощью setcookie, - это один файл cookie за раз.

+0

я думал, что там были такие функции, как ClearAllCookies(); в PHP haha ​​ – DarkAmazon

1

Может попробовать

if (isset($_COOKIE['cookie'])) { 
    setcookie ("cookie", array()); 
} 

или даже

if (isset($_COOKIE['cookie'])) { 
    setcookie ("cookie", array('one'=>'','two'=>'','three'=>'','four'=>'',)); 
} 

если вам нужны индексы

+0

Предупреждение: setcookie() ожидает, что параметр 2 будет строкой – DarkAmazon

+0

Проверено doc на php.net, и похоже, что @JBzd верен. вы должны удалить каждый элемент массива файлов cookie по отдельности. –

Смежные вопросы