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



我终于把我的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);

最新更新