我有以下内容将前10个URL存储到会话中:
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
//Insert Current URL in SESSION
$CurrentPage = curPageURL();
if(strpos($CurrentPage, '/products/'))
{
echo "<div class=\"title\">Recently viewed products</div>
<div id=\"recent\">";
$_SESSION['pages'][] = $CurrentPage;
if ( Count ( $_SESSION['pages'] ) > 10 )
Array_Shift ( $_SESSION['pages'] );
如何确保只存储唯一条目?
谢谢, 乙
答案 0 :(得分:3)
而不是$_SESSION['pages'][] = $CurrentPage
尝试$_SESSION['pages'][$CurrentPage] = 1
/ edit:保持项目排序,先取消设置:
unset($_SESSION['pages'][$CurrentPage]);
$_SESSION['pages'][$CurrentPage] = 1;
答案 1 :(得分:3)
if(!in_array($CurrentPage, $_SESSION['pages']) {
$_SESSION['pages'][] = $CurrentPage;
}
答案 2 :(得分:1)
在
之后$_SESSION['pages'][] = $CurrentPage;
你需要添加
$_SESSION['pages'] = array_unique($_SESSION['pages']);
文档可用here
此方法需要较少的处理,因为它是本机函数。对阵列中的每个项目执行“if”可能会非常昂贵。
答案 3 :(得分:0)
array_unique可以提供帮助吗?