2012-01-15 74 views
0

您好我目前有這個代碼檢索數據庫中每個圖像的標籤。標籤由逗號分隔。我將每組標籤放在數組的末尾。現在我想創建一個檢索標籤的數組,但合併任何重複。如何合併數組中的匹配字符串?

function get_tags() 
{ 
    $tag_array = array(); 
    $query = mysql_query(" 
    SELECT tags 
    FROM gallery_image 
    "); 

    while($row = mysql_fetch_assoc($query)) 
    { 
     $tags = $row['tags']; 
     $tag_array[] = $tags; 

    } 

    echo $tag_array[0] . '<br>' . $tag_array[1] . '<br>' .$tag_array[2]; 
} 

回答

2

您提出的問題不是很清楚,但array_unique可能是您需要的嗎?

function get_tags() 
{ 
    $query = mysql_query('SELECT tags '. 
         'FROM gallery_image'); 
    $tag_array = array(); 
    while($row = mysql_fetch_assoc($query)) 
    $tag_array = array_merge($tag_array, explode(',', $row['tags'])); 

    return array_unique($tag_array); 
} 
1

你可能想是這樣的:

$tags = array(
    'one,two', 
    'one,three', 
); 

$result = array_unique(array_reduce($tags, 
            function($curr, $el) { 
             return array_merge($curr, explode(',', $el)); 
            }, 
            array())); 

See it in action

這樣做是過程中的每個結果行(我假定看起來像"tag1,tag2")依次與array_reduce,與explode分裂標記出來,並將其收集到一具有每個元素只有一個標籤的中間陣列。然後用array_unique過濾掉重複標籤以產生最終結果。

0

試試這個:

$unique_tags = array(); 
foreach ($tag_array as $value) { 
    $unique_tags = array_merge($unique_tags, explode(",", $value); 
} 
$unique_tags = array_unique($unique_tags); 
相關問題