2014-03-04 56 views
0

我有一個MySQL數據庫,數以百計的項目由2個不同的值標識:modelcolorPHP:防止項目被顯示不止一次

例:

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

我打印使用PHP腳本,相同的物品應跳過所有不同avaliable項目表。輸出應該是這樣的:

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

請注意,該項目model: 001, color:1應該只顯示一次。

完成工作的最佳方式是什麼?我正在考慮在添加每個項目之後向數組$listed添加一串model:color,然後檢查in_array()項目是否已列出。這是一種可以接受的方法嗎?

PS:還有其他值可以從數據庫中檢索到,以便在表格中顯示,例如'name','value','size'。我不確定這將如何改變。

如果您要提出請求,請留下一些代碼作爲示例。

非常感謝!

+3

也許這是有幫助嗎? http://stackoverflow.com/questions/1330692/distinct-pair-of-values-sql或這個http://stackoverflow.com/questions/12013900/selecting-distinct-pair-mysql – Dan

+0

看起來接近我想要的,但還有其他值要從數據庫中檢索出來以顯示在表上,例如'name','value','size'。我不確定這將如何改變。 – Sharp

+0

你能從MYSQL端做到嗎?例如SELECT DISTINCT模型,顏色FROM表; – VVLeon

回答

0

與解決它:

SELECT * from table_name GROUP BY model, color 
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。