В этой статье я хочу показать два способа как хранить в куках массив.
Как всем известно, хранить массив в том виде как он есть, в куках нельзя. В куки можно записывать только строковые значения.
Все что нам нужно это просто преобразовать массив в строку и записать в куку. И потом прочитать из кук и преобразовать строку опять в массив.
Я нашел несколько способов, для конвертирования массива в строку и обратно. Первый спосовб — это сериализация, а второй это разложение с помощью функции implode.
Ниже приведены четыре функции — две из них переводят массив в староку и записываютс в куку, и две другие читают куки и переводят строку обратно в массив.
// записываем function setArrayInCookie($nameCookies, $array){ $value = serialize($array); setcookie($nameCookies, $value, time()+3600*24); return true; } // читаем function getArrayInCookie($nameCookies){ if(isset($_COOKIE[$nameCookies])){ $result = unserialize($_COOKIE[$nameCookies]); }else{ $result = false; } return $result; } // записываем function setArrayInCookie2($nameCookies, $array){ $value = implode('|||', $array); setcookie($nameCookies, $value, time()+3600*24); return true; } // читаем function getArrayInCookie2($nameCookies){ if(isset($_COOKIE[$nameCookies])){ $result = explode('|||', $_COOKIE[$nameCookies]); }else{ $result = false; } return $result; }
UPD 22.11.2016 Еще один способ, который оказался удобнее предыдущих: можно кодировать и декодировать массив в формат json, с помощью функций json_encode и json_decode