我终于抽出时间将我的 PHP 安装从 7.2 更新到 7.4(计划直接更新到当前版本,但要分步骤进行),当我运行现有脚本时出现了一个奇怪的错误:
消息:尝试访问 null 类型值的数组偏移量
出现的这一行只是从一个简单的 mysql 结果集中填充一个数组。
for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;
脚本仍然可以正常运行,但我只是不喜欢出现任何错误。我很困惑为什么会出错,并搜索了几个小时但无济于事。为什么会出现这个错误?有没有办法在没有错误的情况下执行相同的操作?
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);
P粉6814003072024-01-03 14:58:49
mysqli_fetch_row
将在某个时刻返回 null
(根据文档,当它用完要检索的行时,它总是会这样做)。但是在尝试读取其第 0 个索引之前您没有检查它,因此会出现错误。
许多人使用这种样式检索行:
while ($row = mysqli_fetch_row($result)) { $resultArray[] = $row[0]; }
这将避免此类问题。这也是您在示例和文档中经常看到的完成方式。