Php 为什么我的数组返回重复信息?

Php 为什么我的数组返回重复信息?,php,pdo,Php,Pdo,我对PHP的PDO有点陌生,我想知道它为什么会做一些奇怪的事情。我有以下代码(按预期工作) 然而,我很好奇为什么它会返回一个看似重复的响应。这是它返回内容的一个示例: /file.php:X: array (size=X) 'id' => string '2' (length=1) 0 => string '2' (length=1) 'fullname' => string '' (length=0) 1 => string '' (length=0)

我对PHP的PDO有点陌生,我想知道它为什么会做一些奇怪的事情。我有以下代码(按预期工作)

然而,我很好奇为什么它会返回一个看似重复的响应。这是它返回内容的一个示例:

/file.php:X:
array (size=X)
  'id' => string '2' (length=1)
  0 => string '2' (length=1)
  'fullname' => string '' (length=0)
  1 => string '' (length=0)
  'email' => string 'bob@example.com' (length=15)
  2 => string 'bob@example.com' (length=15)
...

我的数据库中有
ID
fullname
email
等列,但是为什么它还会返回两次键值对,而第二个键值对默认为基于int的键?

您没有指定所需的获取样式,默认情况下,它被设置为
PDO::FETCH_BOTH
,这就是为什么会得到重复的数据。因此,您需要指定返回数组的所需样式(按数字或字符串索引,也称为关联数组或对象…),您需要更改此行:

$result = $query->fetch();
要获取关联数组,请执行以下操作:

$result = $query->fetch(PDO::FETCH_ASSOC);
或者,此操作用于获取由从0开始的数字索引的经典数组:

$result = $query->fetch(PDO::FETCH_NUM);
还有更多的抓取样式,您可以查看php手册了解更多信息


希望我能进一步推动你。

看看
fetch\u style
mode
$query->fetch(\PDO::fetch\u ASSOC)
。基本上,它同时返回一个关联数组和一个索引数组AKA
FETCH\u both
。对我来说,我总是设置
$PDO->setAttribute(\PDO::ATTR\u DEFAULT\u FETCH\u MODE,\PDO::FETCH\u ASSOC)
然后默认值只是关联数组…..)
$result = $query->fetch(PDO::FETCH_NUM);