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
Lepaskan: 2024-12-15 00:59:13
asal
985 orang telah melayarinya

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;
}
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan