2013-04-14 76 views
0

我想創建一個沒有重複元素的數組。我首先創建了一個空數組,但在PHP中這樣做沒有意義。更好的方法?創建一個沒有重複元素的數組

表1:

Id Name 

表2:

Id Year PROJECT DURATION 
1 2012 A  3 
1 2012 B  2 

獲取數據:

$sql = $mysqli->prepare(SELECT Name, 
      Table1.Id, 
      Year 
      FROM Table1 JOIN Table2 
      WHERE Table1.Id=Table2.Id 
      ORDER BY Id); 
$sql->execute(); 
$result = $sql->get_result(); 

$Id[]=array(); 

while($row = $result->fetch_assoc()){ 

    if (!in_array($row["Id"], $Id)){ 
     $Id[]=$row["Id"]; 
     ... 
    } 
} 

,因爲我後來所需要的所有yearprojectduration條目我不使用DISTINCT。我可以更改數據庫。如何修改和使用table2中的唯一ID?感謝您的建議。

+2

'從系統中選擇DISTINCT ID' – zerkms

+2

數據是否必須有意義?你只是試圖從SQL查詢過濾重複? – dtbarne

+1

修復你的數據庫,怎麼可能有重複ID開頭? – Esailija

回答

0

我會說這是不完全重複的,因爲OP也許不知道組數據結構,一個概念在許多語言版本,但在堆棧Oveflow一下另一個問題:

Built in support for sets in PHP?

爲了解釋,集合數據結構是一個數據類型,它保存着另一個元素(如數組),但保證它們在集合中是唯一的,通常保證插入,刪除和搜索的複雜度低(O(1)或O (日誌N),取決於實施)。

從鏈接看來,PHP最接近集合(及其複雜性保證)是使用數組的索引鍵來存儲數據,而不是數組本身。

但是,如果您不打擾複雜性(如果您的數據集太大或您執行的插入/刪除/搜索過多,則不建議),您也可以使用array_unique,如鏈接中所述。

相關問題