2011-12-13 62 views
1

我已經在我的MySQL數據庫有一個表:array_unique不能在PHP中工作?

pageid | text 
-----------+---------- 
    1  | test 
-----------+---------- 
    2  | example 
-----------+---------- 
    3  | another 
-----------+---------- 
    1  | example1 

這PHP代碼:

$query = "SELECT pageid FROM test"; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)) 
    { 
    $id = $row['pageid']; 
    $id1 = array($id); 
    $id2 = array_unique($id1); 
    foreach ($id2 as $value) 
    { 
    echo $value . "<br>"; 
    } 
    } 

但它返回:

1 
2 
3 
1 

我想提出的pageid小號獨特。所以我想回復一下號碼1。像這樣:

1 
2 
3 

那麼我做錯了什麼?我怎麼能達到我想要的?

在此先感謝...

[我知道這個代碼並沒有太大的意義,但是這僅僅是對這個問題的一個演示,我有一個更復雜的代碼:)]

+0

我相信大家都知道,您可以通過使用組在MySQL中,但只是incase,這是你的頭。 – Layke 2011-12-13 18:12:48

回答

4

當然,在這種情況下,真正的答案是選擇不同的記錄開始:

$query = "SELECT DISTINCT pageid FROM test"; 

但是,爲什麼你的代碼不能正常工作......

您聲明$id1作爲數組,而不是追加到它。相反,您只是每次創建1個元素的數組。相反,追加的所有結果,然後調用array_unique()

$query = "SELECT pageid FROM test"; 
$result = mysql_query($query); 

// Declare array first 
$id1 = array(); 
while($row = mysql_fetch_array($result)) 
    { 
    $id = $row['pageid']; 
    // Append to the array... 
    $id1[] = $id; 
    } 

// Call array_unique() outside the loop: 
$id2 = array_unique($id1); 
foreach ($id2 as $value) 
{ 
    echo $value . "<br>"; 
} 
+0

非常感謝邁克爾,這幫助了很多...... – Akos 2011-12-14 16:43:52

0

你可以通過執行類似SELECT DISTINCT pageid FROM test或使用GROUP BY這樣做在你的SELECT

SELECT pageid FROM test WHERE 1 GROUP BY pageid 
0

您可以使用您的SQL關鍵字DISTINCT query.That將返回頁面的獨特vaues