首页  >  问答  >  正文

尝试访问从 MySQLi 结果集填充的数组的 null 类型值的数组偏移量

我终于抽出时间将我的 PHP 安装从 7.2 更新到 7.4(计划直接更新到当前版本,但要分步骤进行),当我运行现有脚本时出现了一个奇怪的错误:

消息:尝试访问 null 类型值的数组偏移量

出现的这一行只是从一个简单的 mysql 结果集中填充一个数组。

for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;

脚本仍然可以正常运行,但我只是不喜欢出现任何错误。我很困惑为什么会出错,并搜索了几个小时但无济于事。为什么会出现这个错误?有没有办法在没有错误的情况下执行相同的操作?

P粉046387133P粉046387133265 天前500

全部回复(2)我来回复

  • P粉076987386

    P粉0769873862024-01-03 16:51:35

    根据文档,一旦到达结果集末尾,mysqli_fetch_row 将返回 null

    您可以使用foreach循环。我不推荐它,但这是一个可能的解决方案。

    foreach ($result->fetch_all() as [0 => $resultArray[]]); // no body needed

    你真的不需要使用这个奇怪的装置。您可以使用 array_column() 来实现更简单的操作。

    $resultArray = array_column($result->fetch_all(), 0);

    回复
    0
  • P粉681400307

    P粉6814003072024-01-03 14:58:49

    mysqli_fetch_row 将在某个时刻返回 null (根据文档,当它用完要检索的行时,它总是会这样做)。但是在尝试读取其第 0 个索引之前您没有检查它,因此会出现错误。

    许多人使用这种样式检索行:

    while ($row = mysqli_fetch_row($result)) { 
      $resultArray[] = $row[0]; 
    }

    这将避免此类问题。这也是您在示例和文档中经常看到的完成方式。

    回复
    0
  • 取消回复