Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Operator `==` PHP Menghasilkan Keputusan Yang Tidak Dijangka Apabila Membandingkan 0 dan Rentetan?
Perbandingan Mengejutkan PHP 0 dan Rentetan
Penilaian PHP 0 sebagai sama dengan rentetan timbul daripada gelagat pengendali perbandingannya. Apabila menggunakan == sebagai perbandingan, PHP menukar jenis data menjadi serasi. Dalam kes ini, 0 (integer) dilemparkan ke rentetan, membenarkan ia dibandingkan dengan rentetan 'e'.
Walau bagaimanapun, gelagat ini menjadi tidak konsisten apabila harga ditetapkan secara eksplisit kepada 0. Penilaian yang tidak menentu boleh dikaitkan dengan perbezaan halus antara == dan ===. == melakukan penukaran jenis, manakala === menyemak kesaksamaan yang ketat, termasuk jenis data.
Menggunakan === memastikan perbandingan adalah berdasarkan nilai data sebenar, termasuk jenisnya. Dalam kod yang disediakan, menggantikan == dengan === akan menilai 0 dengan betul sebagai tidak sama dengan 'e' apabila harga ditetapkan kepada 0.
Nota tentang Perubahan Versi PHP:
Dalam PHP 8, tingkah laku perbandingan telah berubah. Apabila membandingkan rentetan berangka dengan nombor, PHP kini menggunakan perbandingan berangka. Jika tidak, PHP menukar nombor kepada rentetan sebelum membuat perbandingan.
Contoh Kod dengan ===:
$item['price'] = 0; /* Code to get item information goes in here */ if($item['price'] === 'e') { $item['price'] = -1; }
Dengan pembetulan ini, kod akan menentukan dengan tepat sama ada harga dimaksudkan sebagai 0 atau pertukaran 'e', memastikan pengendalian harga item yang betul.
Atas ialah kandungan terperinci Mengapa Operator `==` PHP Menghasilkan Keputusan Yang Tidak Dijangka Apabila Membandingkan 0 dan Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!