需要在foreach中删除数组中的重复值
问题描述:
想知道您是否可以帮助我。
我有一列有标签的行。在每一行中,我都用逗号和空格分隔各个标记。需要在foreach中删除数组中的重复值
例如:BMW M5,真皮座椅,24个轮毂等
什么,我需要做的是通过数组循环,爆炸,然后打印值的页面。到目前为止,我已经能够做到这一点;但是,它会打印重复项。
这里是我的代码至今:
<?php
$cleanTags = ($row_getTags['tags']);
$cleanerTags = str_replace(', ',"-",$cleanerTags);
$tagstr = ($cleanerTags);
$tags = explode('-',$tagstr);
foreach($tags as $tag)
{
echo "<li><a href=\"results.php?search=".str_replace(" ",'%20',$tag)."\" title=\"Find more stuff tagged: ".$tag."\" class=\"tagLink\">".$tag."</a></li>";
}
?>
我如何去从阵列中删除重复?我试过没有运气的array_unique。任何帮助将不胜感激,我事先感谢您的帮助!
干杯
答
如果array_unique
没有做的伎俩(我不知道你是如何使用的),这里是一个办法:
function remove_duplicates(array $array){
$tmp_array = array();
foreach($array as $key => $val)
{
if (!in_array($val, $tmp_array))
{
$tmp_array[$key] = $val;
}
}
return $tmp_array;
}
现在你的代码应该是:
$cleanTags = ($row_getTags['tags']);
$cleanerTags = str_replace(', ',"-",$cleanerTags);
$tagstr = ($cleanerTags);
$tags = explode('-',$tagstr);
// remove duplicates
$tags = remove_duplicates($tags);
foreach($tags as $tag)
{
echo "<li><a href=\"results.php?search=".str_replace(" ",'%20',$tag)."\" title=\"Find more stuff tagged: ".$tag."\" class=\"tagLink\">".$tag."</a></li>";
}
答
通常,array_unique
可解决您的问题。像这样:
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
那么......你能告诉你你是怎么试着array_unique
?
你确定每个标签都是相同的大小写,字符串长度等等...是否字符与字符完全相同?可能要尝试在尝试array_unique之前将所有值设置为小写。 – kmfk 2010-08-05 21:20:59
你在什么时候尝试'array_unique'? – Gumbo 2010-08-05 21:30:11