从数组中选择唯一文本

时间:2011-09-09 23:06:24

标签: php mysql arrays design-patterns

我在从数据库中选择唯一文本时遇到问题。

这是一个电影数据库,让我们假设我在数据库中有2部电影。

第一部电影属于类别:戏剧,浪漫,战争 第二部电影在类别中:戏剧,惊悚

我需要的是返回一个将向我显示的数组:戏剧,浪漫,战争,惊悚。 我当前对mysql的查询如下:

  

$ query ='SELECT genres FROM imdb WHERE actors LIKE“%%'。$ name。'%”';

在while循环中,我使用“foreach”,如下所示:

foreach(explode(', ', $TMPL['genres']) as $v)
                    $TMPL['genre'] .= '<option value="'.urlencode($v).'">'.($v).'</option>';

这回归了我所有的价值观,包括重复的价值观,如下:戏剧,浪漫,战争狂暴,惊悚

有任何线索如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

$query = 'SELECT DISTINCT genres FROM imdb WHERE actors LIKE "%%'.$name.'%"';

会这样做

答案 1 :(得分:1)

使用DISTINCT

$query = 'SELECT DISTINCT genres FROM imdb WHERE actors LIKE "%%'.$name.'%"';

答案 2 :(得分:1)

所以你有一个列有分类列表的列?

遍历查询中的每一行并展开类型,将每个类型添加到主数组,然后使用array_unique()

如果我理解你的话,你很可能(很容易)使用MySQL,因为你没有正确地规范你的数据库。

答案 3 :(得分:1)

只需在具有重复值的数组上使用array_unique函数!

$ unique_values = array_unique($ TMPL ['genre']);