【问题标题】:Why does mysqli_fetch_array() return array double the size? [closed]为什么 mysqli_fetch_array() 返回数组大小的两倍? [关闭]
【发布时间】:2013-04-06 06:50:23
【问题描述】:

我在做一个非常简单的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";

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

我的数据库中有

 Col1  Col2
 "hi1" "bye1"

当我这样做时

 $row = mysqli_fetch_array($my_rec);
 foreach($row as $x){
       echo $x . "\n";
 }

它会打印出来

 hi1
 hi1
 by2
 by2

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

【问题讨论】:

  • RTLM: php.net/mysql_fetch_array,尤其是“返回值”部分。
  • @MarcB L 是什么意思
  • Linked,因为这里的某些人认为 F'ing 过于苛刻,无法使用。
  • 同时查看php.net/mysql_fetch_assoc 以避免包含位置索引。
  • 我不明白为什么我被否决了。我阅读了 php 手册,但不明白为什么我得到双数组。然后我去stackoverflow问一个问题,我因为不理解手册而停了下来。你们这些人毁了stackoverflow。这不是为知道自己在做什么的人制作的网站。否则为什么会有人在这里提问。我知道很多人会因为喜欢你而避开这类论坛。

标签: php mysql mysqli lamp


【解决方案1】:

因为它还包含一个填充了列位置的数组(即:0、1、2、3 和 id、用户名、密码、电子邮件)。 id 和 0 都持有相同的数据。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2018-12-30
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多