需要在foreach期间从数组中删除重复值

时间:2010-08-05 21:14:59

标签: php

只是想知道你是否可以帮助我 我有一个包含标签行的列。在每一行中,我都用逗号和空格分隔每个标记。

例如: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 个答案:

答案 0 :(得分:4)

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

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

那么......你能说明你是如何尝试array_unique的吗?

答案 1 :(得分:2)

如果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>";
}