Rumah >pembangunan bahagian belakang >tutorial php >Mengapa PHP 7.4 Membuang \'Cuba Mengakses Array Offset pada Nilai Jenis Bool\'?

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

Barbara Streisand
Barbara Streisandasal
2024-11-27 01:46:10731semak imbas

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

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!

Kenyataan:
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