MarShalL89
21.05.2013, 12:35:00
Witam, dość dużo szperałem w internecie i nie widziałem takiej informacji.
Chodzi o to, że wiem, że można zapisać tablice do sesji, ale czy zapisaną tablicę w sesji można z powrotem zapisać jako tablica tak, aby odwołać się do poszczególnego elementu tablicy? Jeśli nie można to jak odwołać się do elementów sesji? - tak, aby każdy element był wyświetlany np w oddzielnej linii i żeby pojedynczy element można było usunąć?
mar1aczi
21.05.2013, 12:49:39
serializePrzed zapisem wykonujesz metodę serialize na tablicy i zapisujesz, po odczycie wykonujesz unserialize na tablicy i ja modyfikujesz.
Crozin
21.05.2013, 12:54:07
Wbudowany w PHP mechanizm sesji sam zajmuje się serializacją wrzuconych do niego danych, nie ma potrzeby ręcznego korzystania z
serialize. Na dobrą sprawę nie musisz niczego robić z danymi, które są wrzucane do sesji - jedynie, w przypadku obiektów powinno implementować się interfejs
Serializable.
mar1aczi
21.05.2013, 12:56:12
Przy okazji: co szybsze - owa serializacja, deserializacja czy json_encode/json_decode?
Crozin
21.05.2013, 13:09:28
Serializacja, ale jak już wspomniałem: nie powinieneś ręcznie serializować danych trafiających do sesji.
MarShalL89
21.05.2013, 13:38:36
Rozumiem zasadę - chyba rozumiem, ale powiedzmy, ze mam taki kod:
if(!isset($_SESSION['produkty'])) { // sprawdzasz czy jest już w sesji koszyk, jeśli nie tworzysz pusty $_SESSION['produkty'] = $produkty;
}
$_SESSION['produkty'][] = $ItemID; // dorzucasz do id produktu do tablicy
}
to efekt wygląda tak:
Array ( [0] => s:0:""; [1] => 1 [2] => 1 [3] => 2 ) ArrayCzy to właśnie w taki sposób powinno wyglądać? Czy ja przed każdym dodaniem nowego elementu do tablicy musze użyć unserialize?
CuteOne
21.05.2013, 13:45:55
if(!isset($_SESSION['produkty'])) { // sprawdzasz czy jest już w sesji koszyk, jeśli nie tworzysz pusty $_SESSION['produkty'] = array(); }
$_SESSION['produkty'][] = $ItemID; // dorzucasz do id produktu do tablicy
}
Crozin
21.05.2013, 13:47:25
if(!isset($_SESSION['produkty']) { $_SESSION['produkty'] = array(); }
$_SESSION['prodkty'][] = $itemId;
}
Nic, z żadną serializacją nie powinieneś robić.
MarShalL89
21.05.2013, 14:08:54
Wybaczcie, ale chyba jestem za głupi już na to wszystko, ale w takim razie jak mogę usunąć pojedynczy element z sesji ?
Crozin
21.05.2013, 14:26:40
unset($_SESSION['klucz'])
?
MarShalL89
22.05.2013, 11:39:19
Okej, zrozumiałem - dziękuję czyli
unset($_SESSION['produkty']['6']);
Usuwa z sesji produkty element o kluczu 6

Jeszcze raz dziękuję za wyjasnienie