Php 唯一\u数组不工作

Php 唯一\u数组不工作,php,arrays,Php,Arrays,我有以下内容将当前URL添加到会话中,然后显示与该URL关联的最后10个产品 问题在于,unique_array函数似乎允许将重复的URL添加到会话中: <?php // Make URL function curPageURL() { $pageURL = 'http'; if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80"

我有以下内容将当前URL添加到会话中,然后显示与该URL关联的最后10个产品

问题在于,unique_array函数似乎允许将重复的URL添加到会话中:

<?php 
// Make 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=\"rhm1-large-box\">
    <div class=\"rhm1-right-large-box\"></div>
      <div class=\"rhm1-left-large-box\"></div>
      <div class=\"largebox-heading\"><strong>Recently viewed products</strong></div>
    <div class=\"rhm1-bg-large-box\"></div>
  </div><div class=\"t\"><div class=\"b\"><div class=\"l\"><div class=\"r\"><div class=\"bl\"><div class=\"br\">
    <div id=\"recent\">";
    $_SESSION['pages'][] = $CurrentPage;
    $_SESSION['pages'] = array_unique($_SESSION['pages']);
    if ( Count ( $_SESSION['pages'] ) > 10 )
    Array_Shift ( $_SESSION['pages'] );
  //remove 1st part of address from array
  foreach ($_SESSION['pages'] as &$value) {
  if(strpos($value, '/products/')) {
  echo "<div class=\"recent_prod\">";
  echo "<div class=\"t\"><div class=\"b\"><div class=\"l\"><div class=\"r\"><div class=\"bl\"><div class=\"br\">";
  $url = $value;
  $id = explode('/', $url);
  $ppname = $id[5];
  $sql = "SELECT * FROM products WHERE product_id='$ppname'";
  $result = mysql_query($sql);        
  $myrow = mysql_fetch_array($result);
  $sqlpid = $myrow['product_id'];
  $sqlpname = $myrow['product_name'];
  $sqlpnameurl = str_replace(" ","_",$value);
  $sqlpcatname = $myrow['category_id'];
  $sqlpimage = $myrow['product_thumb_image'];
  echo "<div class=\"prod-titled-a\"><a href=\"" .$sqlpname. "\">" .$sqlpname. "</a></div><br />";
  echo "<a href=\"".$sqlpnameurl. "\"><img src=\"/productimages/thumb/" .$sqlpimage. "\" border=\"0px\" alt=\"" .$sqlpname. "\"/></a><br />";
  $sql1 = "SELECT * FROM product_xref_options WHERE product_id='$sqlpid'";
  $result1 = mysql_query($sql1);        
  $myrow1 = mysql_fetch_array($result1);
  echo "RRP: &pound;<del>" .$myrow1['wasprice']. "</del><br />";
  echo "<span style=\"color:red; font-size:12px;\">OUR PRICE:<b> &pound;" .$myrow1['price']. "</b></span><br />";
  echo "</div></div>
            </div>
    </div></div></div></div>";
  }
   }
echo "<span class=\"lb-half\"></span><!--[If IE]><span class=\"lb-double\"></span><![endif]--></div>
            </div>
    </div></div></div></div><br clear=\"all\" /><br />";
 }
else
{
echo "";
}
  ?>

您应该确保在echo语句之前处理会话变量。您不希望出现经典的“已发送邮件头”错误:


你能用
var\u dump
s发布相关的代码位吗?你有允许重复的示例URL吗?在$\u SESSION['pages']值上执行var\u dump或print\r,然后将结果粘贴到这里,以获得一个你说有重复项的实例。@Matt:是的,哈哈。此类n00b代码为o_0。总之,@Bift:从PHP文档()中的
array\u unique
,它声明它不适用于多维数组(您正在尝试使用多维数组)。您可能需要编写函数来保证数组中的唯一性。
// get pages array first to avoid sending headers
// typecasted to avoid case of empty session var
$pages = (array) $_SESSION['pages'];

// ensure no leading and trailing whitespaces
$pages[] = trim($CurrentPage);
if (count($pages) > 10) array_shift($pages);

// push to session
$_SESSION['pages'] = array_unique($pages);