Mengapa PHP 7.4 Membuang \'Cuba Mengakses Array Offset pada Nilai Jenis Bool\'?

Barbara Streisand
Lepaskan: 2024-11-27 01:46:10
asal
704 orang telah melayarinya

Why Does PHP 7.4 Throw

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;
}
Salin selepas log masuk

Sebagai alternatif, anda boleh menggunakan null operator penggabungan untuk memberikan nilai lalai kepada $Row['Data'] secara langsung:

$Row['Data'] ??= 'default value';
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan