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
Barbara Streisandasal
2024-12-22 11:45:09167semak imbas

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"];

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 ])

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)

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:
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