Bir dizi benzersiz girişleri

3 Cevap php

Ben bir oturumuna önceki 10 URL depolayan şu var:

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'] );

Nasıl emin yalnızca benzersiz kayıtlar saklanır yapabilirim?

Thanks, B

3 Cevap

Hemen sonra

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

Eklemek gerekir

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

Dokümanlar mevcuttur here

Bu yerel bir fonksiyonu olduğu gibi bu yöntem, daha az işlem gerektirmektedir. Dizideki her öğe üzerinde bir 'if' Sahne potansiyel olarak oldukça pahalı olabilir.

yerine $_SESSION['pages'][] = $CurrentPage deneyin $_SESSION['pages'][$CurrentPage] = 1

/ Edit: kriteri, unset ilk öğeleri tutmak için:

 unset($_SESSION['pages'][$CurrentPage]);
 $_SESSION['pages'][$CurrentPage] = 1;

array_unique yardımcı olabilir mi?