忽略php中重复的mysql值

时间:2013-04-22 23:07:53

标签: php mysql

一旦我运行查询,将多个列连接在一起,我得到的结果如下:

id     item     category
1      item 1   A
1      item 1   B
1      item 1   C
2      item 2   A
2      item 2   D
3      item 3   B
3      item 3   E

我有一个输出每行的while循环:。

while($results = mysql_fetch_array($raw_results)) {
    echo $results['item'].<br>;
    echo "Category: ".$results['category'];
}

它正在给出这个:

<div>
Item 1
Category: A
</div>

<div>
Item 1
Category: B
</div>

等等,但我需要做的是将每个ID的所有值合并到一个空格中,结果如下所示:

<div>
Item 1
Category: A, B, C
</div>

<div>
Item 2
Category: A, D
</div>

<div>
Item 3
Category: B, E
</div>

最好的方法是什么?我应该为每个ID创建另一个包含行的数组,然后循环遍历(以及如何设置数组?)或者还有其他什么?

5 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

您可以在查询中执行此操作,而不是依赖于PHP。

  Select item, group_concat(category) FROM yourtable GROUP BY Item

答案 2 :(得分:1)

我会做这样的事情:

select id, item, group_concat(category) from Table1
group by id, item

SQLFiddle

答案 3 :(得分:0)

为每个项目创建一个类别数组:

while($results = mysql_fetch_array($raw_results)) {
    $items[$results['item']][] = $results['category'];
}

然后使用它输出您的HTML:

foreach ($items as $itemName => $categories) {
    echo $itemName.'<br>';
    echo 'Categories: '.implode(', ',$categories);
}

答案 4 :(得分:0)

如果您无法更改从数据库获取数据的查询,则可以使用PHP帮助程序函数array_unique。此函数从数组中删除重复值。虽然最好在MySQL中执行此操作,但开发人员并不总是可以轻松地执行此操作,因此这会有所帮助。以下是此函数的PHP手册链接:

http://www.php.net/manual/en/function.array-unique.php