Php 唯一\u数组不工作
我有以下内容将当前URL添加到会话中,然后显示与该URL关联的最后10个产品 问题在于,unique_array函数似乎允许将重复的URL添加到会话中: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"
<?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: £<del>" .$myrow1['wasprice']. "</del><br />";
echo "<span style=\"color:red; font-size:12px;\">OUR PRICE:<b> £" .$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);