Cookie jest plikiem tekstowym, nie możesz zapisać w nim tablicy w postaci innej niż po użyciu serialize.
mylisz się, można przekazać tablicę w sposób pokazany przez autora wątku, a php zrobi z tego tablicę
Kopiuj
$tablica = Array(
'wartosc' => 'cos tam',
'inna_wartosc' => 'cos tam jeszcze'
);
// można tak:
setcookie('cookie1', serialize($tablica));//tablica zostanie zapisana w formie tekstu
// ale można też tak:
foreach($tablica as $key => $value)
{
setcookie('cookie2[' . $key . ']', $value);
}
//Odczyt cookie
$odczytana = unserialize($_COOKIE['cookie1']);
var_dump($odczytana); // array(2) { ["wartosc"]=> string(7) "cos tam" ["inna_wartosc"]=> string(15) "cos tam jeszcze" }
// bez użycia serialize / unserialize
$odczytana2 = $_COOKIE['cookie2'];
var_dump($odczytana2); // array(2) { ["wartosc"]=> string(7) "cos tam" ["inna_wartosc"]=> string(15) "cos tam jeszcze" }
to że plik cookies jest plikiem tekstowym nie ma nic do rzeczy, tak samo jak inputy w formularzu są tylko inputami ale można je grupować przy użyciu "[]" i php je zinterpretuje jako tablicę
masz to nawet w manualu:
You may also set array cookies by using array notation in the cookie name. This has the effect of setting as many cookies as you have array elements, but when the cookie is received by your script, the values are all placed in an array with the cookie's name:
z dwoma małymi różnicami - w drugim przypadku zmienne zawsze będą typu "string" i w ciasteczku zapisze się np "1" zamiast true - trzeba sobie ręcznie rzutować po odczytaniu (ale to raczej na plus patrząc na post powyżej :) )
i po drugie - trzeba ręcznie usuwać elementy tablicy bo raz ustawione tak zostaną (to też może być na plus, bo nie trzeba dla każdej małej zmiany w tablicy przesyłać jej w ciastkach w całości)
z tym że kto w ogóle przesyła do ciastek tablice ;)