您好我目前有这段代码从数据库中的每个图片中检索标签。标签用逗号分隔。我将每组标签放在数组的末尾。现在我想创建一个检索到的标签数组,但要合并任何重复。
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];
}
答案 0 :(得分: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 :(得分: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
过滤掉重复的标签,以产生最终结果。
答案 2 :(得分:0)
试试这个:
$unique_tags = array();
foreach ($tag_array as $value) {
$unique_tags = array_merge($unique_tags, explode(",", $value);
}
$unique_tags = array_unique($unique_tags);