我終於抽出時間將我的 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]; }
這將避免此類問題。這也是您在範例和文件中經常看到的完成方式。