2012-01-15 72 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); 
相关问题