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];
}
4

3 に答える 3

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);
}
于 2012-01-15T14:27:14.570 に答える
1

おそらく次のようなものが必要です。

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

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

実際に見てください

これが行うことは、各結果行 (これは のように見えると思います"tag1,tag2") を で順番に処理しarray_reduce、 でタグを分割し、explode要素ごとに 1 つのタグしかない中間配列にそれらを収集することです。次に、重複するタグがフィルターで除外されarray_unique、最終結果が生成されます。

于 2012-01-15T14:28:25.973 に答える
0

これを試して:

$unique_tags = array();
foreach ($tag_array as $value) {
    $unique_tags = array_merge($unique_tags, explode(",", $value);
}
$unique_tags = array_unique($unique_tags);
于 2012-01-15T14:29:13.247 に答える