Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Membandingkan String dengan 0 dalam PHP Kadang-kadang Kembali Benar dan Kadang-kadang Kembali Salah?

Mengapa Membandingkan String dengan 0 dalam PHP Kadang-kadang Kembali Benar dan Kadang-kadang Kembali Salah?

Patricia Arquette
Patricia Arquetteasal
2024-12-07 16:23:12406semak imbas

Why Does Comparing a String to 0 in PHP Sometimes Return True and Sometimes Return False?

Memahami Perbandingan Ingin tahu Rentetan dengan Integer

Ramai pengaturcara hairan dengan kelakuan kod PHP berikut:

$test1 = "d85d1d81b25614a3504a3d5601a9cb2e";
$test2 = "3581169b064f71be1630b321d3ca318f";

if ($test1 == 0)
  echo "Test 1 is Equal!?";
if ($test2 == 0)
  echo "Test 2 is Equal!?";

Anehnya, kod ini mengeluarkan "Ujian 1 Sama!?" sahaja. Mengapa ini berlaku?

Perbandingan Longgar dan Penukaran Rentetan kepada Nombor

Kunci untuk memahami tingkah laku ini terletak pada mekanisme perbandingan longgar PHP. Apabila membandingkan rentetan kepada integer menggunakan operator ==, PHP cuba menukar rentetan kepada nombor.

Menurut manual PHP, penukaran rentetan kepada nombor mengikut peraturan ini:

  • Jika rentetan mengandungi sebarang titik perpuluhan, eksponen atau aksara 'e', ​​ia ditafsirkan sebagai apungan.
  • Jika tidak, ia adalah ditafsirkan sebagai integer.

Dalam kes $test1, perbandingan $test1 == 0 sedang menilai rentetan $test1 sebagai integer, yang menghasilkan 0. Oleh itu, ia memenuhi syarat kesamaan dan mengeluarkan "Ujian 1 Sama!?"

Pengecualian kepada Peraturan

Walau bagaimanapun, dalam kes $test2, penukaran integer gagal kerana ia mengandungi aksara tidak sah, 'b'. Akibatnya, PHP menukar $test2 kepada 0 dalam konteks integer, menjadikan perbandingan $test2 == 0 palsu.

Kesimpulan

Ketidakseragaman yang jelas dalam membandingkan rentetan kepada integer diselesaikan dengan memahami peraturan perbandingan longgar PHP dan mekanisme penukaran rentetan kepada nombornya. Apabila membandingkan rentetan kepada 0, peraturan penukaran menentukan sama ada perbandingan itu benar atau salah.

Atas ialah kandungan terperinci Mengapa Membandingkan String dengan 0 dalam PHP Kadang-kadang Kembali Benar dan Kadang-kadang Kembali Salah?. 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