PHP:防止项目多次显示

时间:2014-03-04 22:20:12

标签: php mysql list repeat

我有一个MySQL数据库,其中有数百个项目由两个不同的值标识:modelcolor

例如:

model | color
------|------
  001 | 1
  001 | 1
  001 | 2
  004 | 1
  004 | 2

我正在使用php脚本打印包含所有不同可用项目的表格,其中应跳过相同的项目。输出应该是这样的:

model | color
------|------
  001 | 1
  001 | 2
  004 | 1
  004 | 2

请注意,项目model: 001, color:1只应显示一次。

完成工作的最佳方法是什么?我正在考虑在添加每个项目后向数组model:color添加一个$listed字符串,然后使用in_array()检查项目是否已列出。这是一种可接受的方法还是有一个较少的虚拟解决方案?

PS:要从数据库中检索要在表格中显示的其他值,例如“名称”,“值”,“大小”。我不确定这会有什么影响。

如果您要进行吸烟,请留下一些代码作为示例。

非常感谢!

2 个答案:

答案 0 :(得分:3)

如果您不能使用group / distinct,那么您的解决方案是可以接受的。但是,我通常喜欢使用isset而不是in_array:

$completed = array();
foreach ($rows as $data) {
    $key = $data['model'] . $data['color'];
    if (isset($completed[$key])) {
        continue;
    }
    // Display
    $completed[$key] = true;
}

原因是我通常需要使用大型集合并且执行isset通常比为数千个项目执行in_array更快。

答案 1 :(得分:0)

解决它:

SELECT * from table_name GROUP BY model, color