Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `in_array()` Kembali Benar untuk Nilai Tidak Wujud dalam 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!