У меня есть сайт объявлений, и когда пользователи нажимают на объявление, элемент массива, содержащий идентификатор объявления, устанавливается в файл cookie.
Затем на главной странице отображается «последнее посещенное объявление».
Проблема в том, что у меня есть ограничение на количество "последних посещенных объявлений" (установлено на 10).
Итак, если массив cookie содержит более 10 элементов, я хочу, чтобы элементы заменялись по одному.
Мне удалось заменить только последний элемент в массиве после cookies-array-length > 10
. Но он только перезаписывает последний элемент, когда я хочу заменить следующий (последний - 1).
Пример:
Cookie содержит более 10 элементов массива.
Я нажимаю на объявление.
Тогда ad-id, который заменяется, является последним элементом, ВСЕГДА.
НО, я хочу заменить элементы один за другим, начиная с последнего. (номер 10, номер 9, номер 8), чтобы он не перезаписывал номер 10 все время.
Вот код:
if (isset($_COOKIE['watched_ads'])){
$expir = time()+1728000; //20 days
$ad_arr = unserialize($_COOKIE['watched_ads']);
$arr_elem = count($ad_arr);
for ($i=0; $i<$arr_elem; $i++){
if ($ad_arr[$i] == $ad_id) { $ad_in_cookie_exists = 1;
}
}
if ($arr_elem>10 && $ad_in_cookie_exists!=1){
$ad_arr[$arr_elem-1]=$ad_id; // HERE IS THE PROBLEM, IT REPLACES LAST ONE, CANT FIGURE OUT HOW TO REPLACE ONE BY ONE!
setcookie('watched_ads', serialize($ad_arr), $expir, '/');
}
else if ($ad_in_cookie_exists !=1 && $arr_elem<=10){
$ad_arr[] = $ad_id; echo "andra";
setcookie('watched_ads', serialize($ad_arr), $expir, '/');
}
}
Итак, у вас есть идеи, как решить эту проблему?
Спасибо
PS: если вам нужно больше информации, скажите мне, и я обновлю Q!