Heim > Fragen und Antworten > Hauptteil
Ich bin endlich dazu gekommen, meine PHP-Installation von 7.2 auf 7.4 zu aktualisieren (habe vor, direkt auf die aktuelle Version zu aktualisieren, mache es aber schrittweise) und beim Ausführen des vorhandenen Skripts ist eine seltsame Fehlermeldung aufgetreten:
Meldung: Versuch, auf den Array-Offset für einen Wert vom Typ Null zuzugreifen
Die angezeigte Zeile füllt einfach ein Array aus einer einfachen MySQL-Ergebnismenge.
for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;
Das Skript läuft immer noch einwandfrei, aber ich mag keine Fehler. Ich bin verwirrt darüber, warum das schiefgeht, und habe stundenlang vergeblich gesucht. Warum tritt dieser Fehler auf? Gibt es eine Möglichkeit, denselben Vorgang fehlerfrei auszuführen?
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]; }
这将避免此类问题。这也是您在示例和文档中经常看到的完成方式。