2013-02-12 21 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