Rumah > pembangunan bahagian belakang > tutorial php > Mengapa 0 == 'e' Menilai kepada Benar dalam PHP (dan Cara Mengelakkannya)?

Mengapa 0 == 'e' Menilai kepada Benar dalam PHP (dan Cara Mengelakkannya)?

Susan Sarandon
Lepaskan: 2024-12-15 16:12:14
asal
348 orang telah melayarinya

Why Does 0 == 'e' Evaluate to True in PHP (and How to Avoid It)?

Tafsiran PHP Terhadap Kesaksamaan: Menyingkap Teka-teki '0'

Dalam PHP, operator perbandingan kesamaan == boleh menyebabkan kekeliruan apabila membandingkan integer kepada rentetan. Khususnya, ungkapan 0 == 'e' menilai kepada benar, menimbulkan persoalan tentang logik asas.

Penjelasan terletak pada peraturan pemutus jenis PHP. Apabila membandingkan jenis data yang berbeza, PHP cuba menukar salah satu daripadanya agar sepadan dengan jenis yang lain. Dalam kes 0 == 'e', ​​PHP menghantar rentetan 'e' kepada integer dalam percubaan untuk melakukan perbandingan berangka.

Malangnya, 'e' bukan perwakilan integer yang sah, jadi penukaran gagal dan menghasilkan nilai 0. Ini bermakna ungkapan berkesan menjadi 0 == 0, yang dinilai kepada benar.

Untuk mengelakkan perkara yang tidak dijangka ini tingkah laku, adalah penting untuk menggunakan === dan bukannya == apabila membandingkan nilai pelbagai jenis. Pengendali kesaksamaan yang ketat === melakukan perbandingan ketat jenis, menghalang sebarang paksaan jenis.

Akibatnya, ungkapan 0 === 'e' akan dinilai sebagai palsu, kerana nilai kedua-duanya adalah jenis yang berbeza (integer dan rentetan). Ini lebih tepat menggambarkan jangkaan intuitif bahawa 0 dan 'e' tidak boleh dianggap sama.

PHP 8 memperkenalkan perubahan kepada tingkah laku ini. Apabila membandingkan nombor dengan rentetan, PHP 8 kini menggunakan perbandingan nombor dan bukannya menghantar nombor kepada rentetan dan menjalankan perbandingan rentetan. Akibatnya, ungkapan 0 == 'e' akan dinilai palsu dalam PHP 8 dan versi yang lebih baru.

Kesimpulan:

Memahami peraturan pemutus jenis PHP adalah penting untuk mengelakkan kejutan apabila membandingkan jenis data. Dengan menggunakan === untuk perbandingan ketat jenis, pembangun boleh memastikan bahawa semakan kesaksamaan dilakukan seperti yang dimaksudkan tanpa sebarang penukaran yang tidak dijangka.

Atas ialah kandungan terperinci Mengapa 0 == 'e' Menilai kepada Benar dalam PHP (dan Cara Mengelakkannya)?. 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