好的,我有一个查询如下:
"SELECT `tag_name`,`sub_tag_name` FROM phpro_tag_targets targets
INNER JOIN sub_tags ON targets.sub_tag_id=sub_tags.sub_tag_id
INNER JOIN phpro_tags tags ON targets.tag_id=tags.tag_id
WHERE tag_target_id='{$vid['tag_target_id']}'";
表格本身看起来是这样的:
phpro_tag_targets:
tag_target_id | tag_id | sub_tag_id | tag_target_name | tag_type_id
int(11) | int(11) | int(11) | var_char | int(3)
<PK - index> | <fk> | <fk>
phpro_tags:
tag_id | tag_name
<PK> | VARCHAR
sub_tags:
sub_tag_id | sub_tag_name
<PK> | VARCHAR
查询的结果看起来像这个
Array (
[0] => Array ( [tag_name] => Humanity [sub_tag_name] => Children )
[1] => Array ( [tag_name] => Society [sub_tag_name] => Children )
[2] => Array ( [tag_name] => Art and Artists [sub_tag_name] => Creativity )
[3] => Array ( [tag_name] => Humanity [sub_tag_name] => Creativity )
[4] => Array ( [tag_name] => Humanity [sub_tag_name] => Culture )
[5] => Array ( [tag_name] => Society [sub_tag_name] => Culture )
[6] => Array ( [tag_name] => unlisted [sub_tag_name] => Culture )
[7] => Array ( [tag_name] => unlisted [sub_tag_name] => Culture )
)
结果是与一段内容(即视频或文章)相关联的标签和子标签。我正试图以html显示此信息,以使我具有<span class="tags">
和<span class="subtags">
。对于上面的e.g.数据,html看起来像这样:
<span class="tags"> Humanity Society Art and Artists unlisted </span>
<span class=subtags> Children Creativity Culture </span>
有没有一种方法可以让我使用php(或更改查询)过滤数据,这样我就只能一次显示每个不同的值。由于我目前使用循环来循环数据,并多次显示相同的标记和子标记,但不知道如何进一步过滤结果。
如果能深入了解我是如何做到这一点的,我将不胜感激!
首先,您需要遍历数据数组,并将所有标记名称和子标记名称收集到单独的数组中。然后使用array_unique从数组中删除重复的值。最后使用内爆将数组元素连接到字符串。
$tags = array();
$sub_tags = array();
// NOTE: $array is query result array
foreach ( $array as $value ) {
$tags[] = $value['tag_name'];
$sub_tags[] = $value['sub_tag_name'];
}
$tags = array_unique( $tags );
$sub_tags = array_unique( $sub_tags );
echo '<span class="tags">'.implode( ' ', $tags ).'</span>';
echo '<span class="subtags">'.implode( ' ', $sub_tags ).'</span>';
我真的希望我已经正确地理解了这个问题。
以下是如何编辑查询,以获得我认为您需要的单行结果。带有DISTINCT选项和"分隔符的GROUP_CONCT函数应该提供您想要的格式。
SELECT GROUP_CONCAT(DISTINCT `tag_name` SEPARATOR ' '),
GROUP_CONCAT(DISTINCT `sub_tag_name`SEPARATOR ' ')
FROM phpro_tag_targets targets
INNER JOIN sub_tags ON targets.sub_tag_id=sub_tags.sub_tag_id
INNER JOIN phpro_tags tags ON targets.tag_id=tags.tag_id
WHERE tag_target_id='{$vid['tag_target_id']}'
输出将是
tag_name | sub_tag_name
Humanity Society Art and Artists unlisted | Children Creativity Culture