Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah `in_array()` Kembali Benar untuk Nilai Tidak Wujud dalam PHP?

Mengapakah `in_array()` Kembali Benar untuk Nilai Tidak Wujud dalam PHP?

Barbara Streisand
Lepaskan: 2024-12-22 11:45:09
asal
276 orang telah melayarinya

Why Does `in_array()` Return True for a Non-Existent Value in PHP?

Gelagat Pelik In-array dengan TRUTH

Fungsi in_array() PHP mempamerkan gelagat yang tidak dijangka apabila bekerja dengan tatasusunan yang mengandungi boolean TRUE.

Mari kita pertimbangkan perkara berikut array:

$arr = [TRUE, "some string", "something else"];
Salin selepas log masuk

Anehnya, in_array("test", $arr) mengembalikan benar, walaupun "test" tiada dalam array. Hasil luar biasa yang sama timbul dengan array_search("test", $arr), yang mengembalikan 0.

Tingkah laku ini bukan pepijat, tetapi ciri yang didokumentasikan dengan baik.

Tegasnya Bercakap: Memahami Parameter Ketiga

Kedua-dua in_array() dan array_search() memiliki parameter ketiga pilihan, $strict, yang lalai kepada FALSE.

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ])
Salin selepas log masuk

Ini bermakna, secara lalai, kedua-dua fungsi menggunakan perbandingan longgar (==). Mereka menilai nilai semata-mata pada kesaksamaan, tidak mengambil kira jenisnya. Akibatnya, dalam contoh yang diberikan, TRUE == "sebarang rentetan bukan kosong" mengembalikan benar kerana juggling jenis.

Menguatkuasakan Ketegasan: Menetapkan $strict kepada TRUE

Untuk memastikan perbandingan yang tepat, anda boleh menetapkan $strict kepada TRUE. Melakukannya memaksa PHP untuk menggunakan perbandingan yang ketat (===), menyemak nilai dan jenis nilai yang dibandingkan.

$result = in_array("test", $arr, TRUE);
var_dump($result); // Output: bool(false)
Salin selepas log masuk

Dalam kes ini, in_array() dengan betul mengembalikan palsu, seperti yang dijangkakan.

Ingat bahawa memahami nuansa juggling jenis dan peranan $strict adalah penting apabila menggunakan in_array() dan array_search(). Fungsi ini menawarkan keupayaan carian yang hebat, tetapi tingkah lakunya boleh menjadi tidak dapat diramalkan jika kehalusan ini diabaikan.

Atas ialah kandungan terperinci Mengapakah `in_array()` Kembali Benar untuk Nilai Tidak Wujud dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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