SELECT 1 FROM表,奇怪的print_r结果


SELECT 1 FROM table, weird print_r result

根据我所读到的,当在我的表上执行以下sql命令和fetchAll()时,该表有6行11列:

$sql = "SELECT 1 FROM table";
$sqlPrepared = $conn->prepare($sql)
$sqlPrepared->execute()
$result = $sqlPrepared->fetchAll();
$print_r($result);

我应该得到6行,每行只有一个值,每个值中的值为1。然而,我得到了6行,每行中有两个值,每个值中的值为1:

Array ( 
  [0] => Array ( 
    [1] => 1 
    [2] => 1 ) 
  [1] => Array ( 
    [1] => 1 
    [2] => 1 ) 
  [2] => Array ( 
    [1] => 1 
    [2] => 1 ) 
  [3] => Array ( 
    [1] => 1 
    [2] => 1 ) 
  [4] => Array ( 
    [1] => 1 
    [2] => 1 ) 
  [5] => Array ( 
    [1] => 1 
    [2] => 1 ) 
) 

问题1:为什么我为每个数组得到2个值而不是1个?

问题2:内部数组不是

 Array ( 
    [1] => 1 ...

为什么不从[0]开始?:

 Array ( 
    [0] => 1 ...

如果您没有在->fetchAll()方法上提供任何标志,这包括多维数组行上的关联索引和数字索引。

因此,当您使用SELECT 1 FROM时,关联索引是1(意思是列名是1),并且由于数组键是唯一的,因此数字索引会进行调整,具有值对的数字索引会分配给2