为什么mysqli_fetch_array()返回数组大小的两倍?

Dr.*_*all -6 php mysql lamp mysqli

我正在做一个非常简单的php语句,比如

print_r($my_rec);
$row = mysqli_fetch_array($my_rec);
echo "\nP_Id " . $row['P_Id'] . ' Length ' . sizeof($row) . "\n";
$row = mysqli_fetch_array($my_rec);
echo "\nP_Id " . $row['P_Id'] . ' Length ' . sizeof($row) . "\n";
Run Code Online (Sandbox Code Playgroud)

现在,当print_r打印到屏幕时,它会报告每个数组中只有16个字段/列.这是真的.但是当我获取一个数组时,它给了我两倍的字段.换句话说,阵列正在重复自身,这是没有意义的.示例......

我有我的数据库

 Col1  Col2
 "hi1" "bye1"
Run Code Online (Sandbox Code Playgroud)

当我做

 $row = mysqli_fetch_array($my_rec);
 foreach($row as $x){
       echo $x . "\n";
 }
Run Code Online (Sandbox Code Playgroud)

它会打印出来

 hi1
 hi1
 by2
 by2
Run Code Online (Sandbox Code Playgroud)

为什么我会出现这种行为?

alx*_*xgb 5

因为它还包括一个填充列位置的数组(即:0,1,2,3和id,用户名,密码,电子邮件).两者id0保持相同的数据.

如果您只想要字符串索引,可以使用mysqli_fetch_assoc(http://php.net/mysqli_fetch_assoc)