需要在foreach中删除数组中的重复值

需要在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("&nbsp;",'%20',$tag)."\" title=\"Find more stuff tagged:&nbsp;".$tag."\" class=\"tagLink\">".$tag."</a></li>"; 
} 
?> 

我如何去从阵列中删除重复?我试过没有运气的array_unique。任何帮助将不胜感激,我事先感谢您的帮助!

干杯

+2

你确定每个标签都是相同的大小写,字符串长度等等...是否字符与字符完全相同?可能要尝试在尝试array_unique之前将所有值设置为小写。 – kmfk 2010-08-05 21:20:59

+1

你在什么时候尝试'array_unique'? – Gumbo 2010-08-05 21:30:11

如果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("&nbsp;",'%20',$tag)."\" title=\"Find more stuff tagged:&nbsp;".$tag."\" class=\"tagLink\">".$tag."</a></li>"; 
} 
+0

'$ my_array'应该是'$ tmp_array'不应该吗? – Amber 2010-08-05 21:21:02

+0

@Amber:当然应该,谢谢:) – Sarfraz 2010-08-05 21:23:18

通常,array_unique可解决您的问题。像这样:

$input = array("a" => "green", "red", "b" => "green", "blue", "red"); 
$result = array_unique($input); 
print_r($result); 

那么......你能告诉你你是怎么试着array_unique