2010-08-05 216 views
1

想知道您是否可以幫助我。
我有一列有標籤的行。在每一行中,我都用逗號和空格分隔各個標記。需要在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

回答

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>"; 
} 
+0

'$ my_array'應該是'$ tmp_array'不應該嗎? – Amber 2010-08-05 21:21:02

+0

@Amber:當然應該,謝謝:) – Sarfraz 2010-08-05 21:23:18

4

通常,array_unique可解決您的問題。像這樣:

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

那麼......你能告訴你你是怎麼試着array_unique