Dalam PHP, membandingkan rentetan dengan integer boleh menghasilkan hasil yang tidak dijangka. Khususnya, membandingkan rentetan yang mengandungi hanya digit dengan integer 0 mungkin dinilai kepada benar, walaupun ia kelihatan tidak betul.
Penjelasan Perilaku
Seperti yang dinyatakan dalam PHP manual, apabila rentetan dinilai dalam konteks angka, ia ditukar kepada nombor berdasarkan aksara yang terkandung di dalamnya. Jika rentetan mengandungi titik perpuluhan, eksponen atau format angka yang sah, ia dinilai sebagai apungan. Walau bagaimanapun, jika ia mengandungi hanya digit, ia dinilai sebagai integer.
Dalam kes rentetan "d85d1d81b25614a3504a3d5601a9cb2e," ia mengandungi hanya digit. Oleh itu, apabila ia dibandingkan dengan integer 0, rentetan mula-mula ditukar kepada integer 0, menghasilkan perbandingan sebenar.
Mengapa Rentetan Kedua Tidak Berfungsi
Rentetan kedua, "3581169b064f71be1630b321d3ca318f," tidak berfungsi kerana mengandungi aksara bukan angka, "b." Akibatnya, apabila ia dinilai dalam konteks angka, ia tidak dianggap sebagai format angka yang sah. Sebaliknya, ia dinilai sebagai rentetan dan perbandingan dengan integer 0 bernilai palsu.
Atas ialah kandungan terperinci Mengapa Membandingkan String dengan 0 dalam PHP Kadang-kadang Kembali Benar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!