2012-01-15 7 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は何が必要かもしれ?

$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

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

は、おそらくこのような何かをしたいです。 で、それぞれの結果行("tag1,tag2"のように見える)を処理し、explodeでタグを分割し、要素ごとに1つのタグを持つ中間配列に集めます。その後、重複タグは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); 
関連する問題