Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Operator `==` PHP Menghasilkan Keputusan Yang Tidak Dijangka Apabila Membandingkan 0 dan Rentetan?

Mengapa Operator `==` PHP Menghasilkan Keputusan Yang Tidak Dijangka Apabila Membandingkan 0 dan Rentetan?

DDD
DDDasal
2024-12-15 00:59:13926semak imbas

Why Does PHP's `==` Operator Produce Unexpected Results When Comparing 0 and Strings?

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!

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