首頁  >  問答  >  主體

嘗試存取從 MySQLi 結果集填充的數組的 null 類型值的數組偏移量

我終於抽出時間將我的 PHP 安裝從 7.2 更新到 7.4(計劃直接更新到當前版本,但要分步驟進行),當我運行現有腳本時出現了一個奇怪的錯誤:

訊息:嘗試存取 null 類型值的陣列偏移量

出現的這一行只是從一個簡單的 mysql 結果集中填入一個陣列。

for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;

腳本仍然可以正常運行,但我只是不喜歡出現任何錯誤。我很困惑為什麼會出錯,並蒐索了幾個小時但無濟於事。為什麼會出現這個錯誤?有沒有辦法在沒有錯誤的情況下執行相同的操作?

P粉046387133P粉046387133265 天前498

全部回覆(2)我來回復

  • P粉076987386

    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);

    回覆
    0
  • P粉681400307

    P粉6814003072024-01-03 14:58:49

    mysqli_fetch_row 將在某個時刻返回 null (根據文檔,當它用完要檢索的行時,它總是會這樣做)。但是在嘗試讀取其第 0 個索引之前您沒有檢查它,因此會出現錯誤。

    許多人使用這種樣式檢索行:

    while ($row = mysqli_fetch_row($result)) { 
      $resultArray[] = $row[0]; 
    }

    這將避免此類問題。這也是您在範例和文件中經常看到的完成方式。

    回覆
    0
  • 取消回覆