Rentetan Pelik kepada Keputusan Perbandingan Integer
Apabila membandingkan rentetan kepada integer, beberapa keputusan yang tidak dijangka boleh berlaku disebabkan oleh peraturan paksaan jenis PHP. Dalam contoh yang disediakan:
$test1 = "d85d1d81b25614a3504a3d5601a9cb2e"; $test2 = "3581169b064f71be1630b321d3ca318f"; if ($test1 == 0) echo "Test 1 is Equal!?"; if ($test2 == 0) echo "Test 2 is Equal!?";
Ujian 1 berjaya kerana rentetan "d85d1d81..." tidak mengandungi data berangka yang sah, jadi ia ditafsirkan sebagai 0.
Walau bagaimanapun, Ujian 2 gagal kerana rentetan "3581169b..." mengandungi data berangka yang sah (awal "3581169"). Mengikut peraturan penukaran PHP, bahagian awal ini digunakan untuk menentukan nilai angka, iaitu bukan 0.
Manual PHP menerangkan bahawa rentetan dinilai seperti berikut:
Dalam kes $ test2, "3581169" awal ialah data berangka yang sah, jadi nilainya bukan 0 dan perbandingannya gagal.
Atas ialah kandungan terperinci Mengapa Membandingkan String dengan 0 dalam PHP Menghasilkan Keputusan yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!