Уникальные записи в массиве - PullRequest
0 голосов
/ 12 октября 2009

У меня есть следующее, которое сохраняет предыдущие 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'] );

Как убедиться, что хранятся только уникальные записи?

Спасибо, B

Ответы [ 4 ]

3 голосов
/ 12 октября 2009
if(!in_array($CurrentPage, $_SESSION['pages']) {
    $_SESSION['pages'][] = $CurrentPage;
}
3 голосов
/ 12 октября 2009

вместо $_SESSION['pages'][] = $CurrentPage попробуйте $_SESSION['pages'][$CurrentPage] = 1

/ edit: чтобы сортировать элементы, сначала удалите их:

 unset($_SESSION['pages'][$CurrentPage]);
 $_SESSION['pages'][$CurrentPage] = 1;
1 голос
/ 12 октября 2009

Сразу после

$_SESSION['pages'][] = $CurrentPage;

нужно добавить

$_SESSION['pages'] = array_unique($_SESSION['pages']);

Документы доступны здесь

Этот метод требует меньше обработки, поскольку это нативная функция. Выполнение 'if' для каждого элемента в массиве может быть довольно дорогостоящим.

0 голосов
/ 12 октября 2009

Может ли array_unique помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...