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

Barbara Streisand
Lepaskan: 2024-11-04 00:40:30
asal
872 orang telah melayarinya

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

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!