Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah PHP melaporkan rentetan kosong sebagai NULL apabila menggunakan operator ==?

Mengapakah PHP melaporkan rentetan kosong sebagai NULL apabila menggunakan operator ==?

Barbara Streisand
Barbara Streisandasal
2024-11-04 00:40:30873semak imbas

Why does PHP report an empty string as NULL when using the == operator?

Mengapa PHP Reporting NULL untuk Rentetan Kosong?

Dalam PHP, menggunakan operator == sebagai perbandingan boleh membawa kepada hasil yang tidak dijangka apabila berurusan dengan nilai kosong.

Pertimbangkan kod berikut:

<code class="php">$a = '';
if($a == NULL) {
    echo 'is null';
}</code>

Anehnya, kod ini akan mengeluarkan "adalah batal" walaupun $a adalah rentetan kosong.

Alasannya

Pengendali == melakukan paksaan jenis dan membandingkan nilai pelbagai jenis. Dalam kes ini, $a (rentetan kosong) ditukar kepada boolean yang setara, iaitu palsu. false dianggap bersamaan dengan NULL dalam PHP apabila menggunakan ==.

Penyelesaian

Untuk membandingkan dengan tepat untuk NULL, gunakan pengendali kesaksamaan yang ketat === dan bukannya = =.

<code class="php">if($a === NULL) {
    echo 'is null';
}</code>

Pengendali === melakukan perbandingan selamat jenis dan akan kembali benar hanya jika nilai adalah sama dalam kedua-dua nilai dan jenis.

Atas ialah kandungan terperinci Mengapakah PHP melaporkan rentetan kosong sebagai NULL apabila menggunakan operator ==?. 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