数组中的唯一条目

时间:2009-10-12 10:27:40

标签: php arrays session

我有以下内容将前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'] );

如何确保只存储唯一条目?

谢谢, 乙

4 个答案:

答案 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可以提供帮助吗?