Если вы хотите, чтобы функция сохраняла последнее посещенное изображение как последний элемент в массиве, просто замените:
$tmpSession = array_slice($tmpSession,1);
на следующую строку:
if (in_array($image_id,$tmpSession))
array_splice($tmpSession, array_search($image_id, $tmpSession), 1);
else
$tmpSession = array_slice($tmpSession, 1);
Функция результата будет выглядеть так:
function lastSeen($image_id) {
if (!isset($_SESSION['lastSeen'])) {
$_SESSION['lastSeen'] = array($image_id);
} else {
$tmpSession = array_unique($_SESSION['lastSeen']);
if (count($tmpSession) > 9){
if (in_array($image_id,$tmpSession))
array_splice($tmpSession, array_search($image_id, $tmpSession), 1);
else
$tmpSession = array_slice($tmpSession, 1);
}
$tmpSession[] = $image_id;
$_SESSION['lastSeen'] = array_unique($tmpSession);
}
return true;
}