Memahami Ralat: Akses Offset Tatasusunan pada Boolean
PHP 7.4 memperkenalkan perubahan dalam pemeriksaan jenis yang ketat, yang membawa kepada ralat "Mencuba untuk akses tatasusunan mengimbangi nilai jenis bool." Ralat ini berlaku apabila cuba mengakses elemen tatasusunan menggunakan sintaks tatasusunan (kurung segi empat sama) pada nilai jenis boolean.
Pembetulan PHP 7.4
Dalam contoh yang disediakan, ralat dilemparkan kerana $Row['Data'] mengembalikan nilai boolean apabila hasil pertanyaan kosong. Untuk membetulkannya, anda boleh menggunakan pengendali penggabungan nol (??) untuk menyemak sama ada $Row['Data'] adalah batal dan menetapkan nilai lalai jika ia adalah. Ini memastikan bahawa anda sentiasa boleh mengakses elemen tatasusunan tanpa menghadapi ralat.
Berikut ialah versi kod yang dikemas kini menggunakan operator penggabungan nol:
public static function read($id) { $Row = MySQL::query("SELECT `Data` FROM `cb_sessions` WHERE `SessionID` = '$id'", TRUE); $session_data = $Row['Data'] ?? ''; return $session_data; }
Sebagai alternatif, anda boleh menggunakan null operator penggabungan untuk memberikan nilai lalai kepada $Row['Data'] secara langsung:
$Row['Data'] ??= 'default value';
Ini akan ditetapkan $Row['Data'] kepada 'nilai lalai' jika ia batal, dan kemudian kembalikan nilainya seperti biasa. Kedua-dua kaedah berkesan menghalang ralat dengan memastikan bahawa $Row['Data'] sentiasa dinilai kepada nilai offset tatasusunan yang sah.
Atas ialah kandungan terperinci Mengapa PHP 7.4 Membuang \'Cuba Mengakses Array Offset pada Nilai Jenis Bool\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!