Rumah >pembangunan bahagian belakang >tutorial php >Mengapa PHP Pertimbangkan 0 Sama dengan 'e' Menggunakan ==, dan Bagaimana Saya Boleh Mengelak Ini?
Perbandingan Rumit PHP: Membongkar Teka-teki 0 = 'e'
Apabila bercakap tentang perbandingan kesamaan dalam PHP, menggunakan operator == boleh membawa kepada hasil yang tidak dijangka, terutamanya apabila membandingkan nombor dengan rentetan. Kes yang membingungkan 0 yang dianggap sama dengan rentetan 'e' ialah satu contoh sedemikian.
Untuk memahami tingkah laku ini, adalah penting untuk mengetahui bahawa PHP melakukan penukaran jenis tersirat apabila menggunakan ==. Apabila membandingkan 0 (integer) dengan 'e' (rentetan), PHP secara automatik menukar 'e' kepada integer. Malangnya, 'e' tidak boleh dihuraikan sebagai integer, jadi ia menjadi 0. Ini menghasilkan perbandingan yang dinilai kepada benar, kerana 0 kini bersamaan dengan 'e' yang ditukar.
Untuk mengelakkan isu ini, ia adalah penting untuk menggunakan pengendali kesaksamaan yang ketat === dan bukannya ==. Operator === melakukan perbandingan selamat jenis, bermakna ia membandingkan kedua-dua nilai dan jenis. Contohnya:
$item['price'] = 0; if ($item['price'] === 0) { // ... }
Dalam PHP 8.0 dan lebih baru, tingkah laku ini telah berubah. PHP kini melakukan perbandingan nombor apabila membandingkan nombor dengan rentetan angka dan perbandingan rentetan apabila membandingkan nombor dengan rentetan bukan angka. Perubahan ini memastikan hasil perbandingan yang lebih konsisten dan boleh diramal.
Ringkasnya, penukaran jenis tersirat PHP boleh membawa kepada perbandingan kesaksamaan yang mengejutkan, terutamanya apabila mencampurkan nombor dan rentetan. Menggunakan operator === ialah pendekatan yang disyorkan untuk mengelakkan isu yang berpotensi ini dan memastikan perbandingan yang tepat dan tidak jelas.
Atas ialah kandungan terperinci Mengapa PHP Pertimbangkan 0 Sama dengan 'e' Menggunakan ==, dan Bagaimana Saya Boleh Mengelak Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!