Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah PHP `0 == 'e'` Menilai kepada Benar?

Mengapakah PHP `0 == 'e'` Menilai kepada Benar?

Patricia Arquette
Patricia Arquetteasal
2024-12-16 07:32:18686semak imbas

Why Does PHP's `0 ==

Kesamaan Nombor Rentetan PHP yang Mengejutkan: Meneroka Anomali '0 == "e"'

Dalam PHP, perbandingan yang kelihatan tidak berbahaya boleh menghasilkan hasil yang tidak dijangka, seperti yang ditunjukkan dalam coretan kod di bawah:

$item['price'] = 0;
if ($item['price'] == 'e') {
    $item['price'] = -1;
}

Walaupun memulakan $item['price'] kepada 0, keadaan if secara tidak jelas dinilai kepada benar apabila 'e' ditugaskan kepada harga, menganggap 0 sebagai bersamaan dengan rentetan 'e' .

Pendedahan: Jenis Casting dan PHP == Operator

Penyebabnya terletak pada operator == PHP, yang cuba menghantar operan kepada jenis yang sama sebelum melakukan perbandingan. Dalam kes ini, ia membuang integer 0 kepada rentetan. Memandangkan 'e' bukan integer yang sah, ia menjadi 0, menghasilkan padanan palsu.

Penyelesaian: Menerima Perbandingan Tegas

Untuk mengelakkan anomali seperti itu, ia adalah dinasihatkan untuk menggunakan operator === dan bukannya ==. === melakukan perbandingan ketat yang tidak melibatkan paksaan jenis, memastikan bahawa hanya nilai jenis yang sama dianggap sama.

Anjakan Menukar Permainan PHP 8

Dalam perubahan ketara daripada versi sebelumnya, PHP 8 memperkenalkan tingkah laku yang diubah suai untuk perbandingan rentetan nombor. Daripada menghantar nombor ke rentetan, PHP 8 menghantar rentetan ke nombor apabila boleh. Perubahan ini sejajar dengan jangkaan, memastikan 0 dan 'e' tidak lagi dianggap sama.

Ringkasnya

Pengendali == PHP boleh membawa kepada hasil yang mengejutkan apabila membandingkan rentetan dan nombor kerana tuangan jenis. Untuk mengelakkan tingkah laku yang tidak dijangka, adalah penting untuk menggunakan operator === untuk perbandingan yang ketat. Tambahan pula, pendekatan disemak PHP 8 terhadap perbandingan nombor rentetan meningkatkan ketekalan dan ketepatan kod.

Atas ialah kandungan terperinci Mengapakah PHP `0 == 'e'` Menilai kepada Benar?. 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