理解錯誤:布林值上的陣列偏移存取
PHP 7.4 引入了嚴格類型檢查的更改,導致錯誤「嘗試存取bool類型值的陣列偏移量。
PHP 7.4 修正
在提供的範例中,拋出錯誤是因為當查詢結果為空時$Row['Data']傳回布林值。若要解決此問題,您可以使用 null 合併運算子 (??) 來檢查 $Row['Data'] 是否為 null,如果是,則為其指派一個預設值。這確保您始終可以存取數組元素而不會遇到錯誤。
這是使用null 合併運算子的程式碼的更新版本:
public static function read($id) { $Row = MySQL::query("SELECT `Data` FROM `cb_sessions` WHERE `SessionID` = '$id'", TRUE); $session_data = $Row['Data'] ?? ''; return $session_data; }
或者,您可以使用null合併運算子直接為$Row['Data'] 指派預設值:
$Row['Data'] ??= 'default value';
這將設定如果$Row['Data'] 為null,則將其設為'預設值',然後照常傳回其值。這兩種方法都透過確保 $Row['Data'] 始終計算為有效的陣列偏移值來有效防止錯誤。
以上是為什麼 PHP 7.4 會拋出「嘗試存取 Bool 類型值的陣列偏移量」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!