2013-02-12 17 views
2

當我從PHP中的數據庫查詢檢索結果時,我會收到重複的值,其中一個是整數,一個是列名。 array_unique()在對數組進行排序時,在大多數情況下會以字符串之前的數字鍵結束,這意味着這將是保留的關鍵字。現在,我使用一個從數組中刪除任何帶有數字鍵的函數,但我並不真正關心這種方法。有沒有人有更好的方法來做到這一點?從PHP數組中刪除重複的值寧願使用文本鍵

+3

'SELECT DISTINCT ...'在SQL將遠遠小於濾波PHP /移除重複的效率更高。防止這些模糊事件發生,而不是事後刪除它們。 – 2013-02-12 22:16:59

+0

問題不是從數據庫返回重複的結果,而是PDO的fetchAll()函數每次返回兩個項目,一次是索引,一次是按列名稱。 – omniuni 2013-02-12 22:43:56

回答

2

更改用於從數據庫檢索值的命令(例如,mysql_fetch_assoc而不是mysql_fetch_array)。無論您現在使用哪種API,都有一種替代方案可以完全滿足您的要求。

更新:

在PDO你可以這樣寫:

$nonumindexes = $res->fetch(PDO::FETCH_ASSOC); 
+0

因爲我使用的是PDO,所以我使用fetchAll(),所以它看起來像'$ query-> fetchAll()'。是否有一個與PDO相同的mysql_fetch_assoc? (對不起,我發現PDO文檔很難瀏覽。) – omniuni 2013-02-12 22:41:32

+0

@omniuni更新了答案。 – fdreger 2013-02-12 22:47:05

+1

@omniuni或只是將PDO :: FETCH_ASSOC設置爲全局屬性,如下所示:http://stackoverflow.com/questions/3893858/is-is-possible-to-set-a-default-pdo-fetch-模式 – fdreger 2013-02-12 22:48:25

1

我懷疑你使用mysqli_fetch_array()來檢索結果?

如果是這樣,則第二個參數允許您將結果作爲關聯數組,數組或二者進行檢索。或者,您可以簡單地使用mysqli_fetch_row或mysqli_fetch_assoc以您想要的格式獲取結果。

http://www.php.net/manual/en/mysqli-result.fetch-array.php