我终于把我的PHP安装从7.2更新到7.4(计划直接到当前,但在步骤中进行),当我运行现有的脚本时出现了一个奇怪的错误:
消息:试图访问null类型值的数组偏移
出现在这一行只是为了从一个简单的mysql结果集填充一个数组。
for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;
脚本仍然很好,但我只是不喜欢任何错误。我很挠头,为什么这是错误的,搜索了几个小时也无济于事。为什么这是错误的,有没有一种方法可以做同样的事情没有错误?
mysqli_fetch_row
将在某个时刻返回null
(正如它在用尽要检索的行时所做的那样,根据文档)。但是在尝试读取它的第0个索引之前没有检查,因此出现错误。
许多人使用这种方式检索行:
while ($row = mysqli_fetch_row($result)) {
$resultArray[] = $row[0];
}
可以避免这类问题。这也是您在示例和文档中经常看到的方式。
根据文档,一旦到达结果集的末尾,mysqli_fetch_row
将返回null
。
可以使用foreach
循环。我不建议这么做,但这是一个可能的解决方案。
foreach ($result->fetch_all() as [0 => $resultArray[]]); // no body needed
你真的不需要使用这个奇怪的装置。使用array_column()
可以更简单。
$resultArray = array_column($result->fetch_all(), 0);