尝试访问从 MySQLi 结果集填充的数组的 null 类型值的数组偏移量
P粉046387133
P粉046387133 2024-01-02 18:45:44
0
2
553

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

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

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

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

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

P粉046387133
P粉046387133

全部回复(2)
P粉076987386

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

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

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

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

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

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

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板