PHP in_array() dan array_search() Gelagat Pelik: Menyelidiki Parameter Pilihan
Dalam menggunakan PHP in_array(), anda mungkin menghadapi tingkah laku yang tidak dijangka apabila mencari unsur-unsur yang tidak wujud. Artikel ini menyiasat keanehan ini dan meneroka peleraian dengan memperkenalkan parameter $strict yang tidak jelas.
Pertimbangkan tatasusunan seperti $arr = [TRUE, "some string", "something else"]. Apabila mencari "ujian" menggunakan in_array(), ia secara mengejutkan mengembalikan TRUE. Begitu juga, array_search() mendapatkan semula indeks "tidak tepat" 0. Tingkah laku ini pada mulanya kelihatan membingungkan, yang membawa kepada andaian bahawa TRUE secara automatik mencetuskan hasil positif universal.
Walau bagaimanapun, ini bukan pepijat tetapi ciri yang disengajakan . Kedua-dua in_array() dan array_search() mempunyai parameter ketiga yang sering diabaikan, $strict, yang menentukan mod perbandingan. Nilai lalainya, FALSE, membenarkan perbandingan longgar (==), mengabaikan percanggahan jenis.
Oleh itu, dalam kes $arr, TRUE == "sebarang rentetan tidak kosong" dinilai kepada BENAR. Dengan menetapkan $strict kepada TRUE, anda mengarahkan PHP untuk menggunakan perbandingan yang ketat (===), mengesahkan kedua-dua nilai dan kesamaan jenis.
Pengetahuan ini memberikan kejelasan kepada tingkah laku yang membingungkan. Dengan menggunakan perbandingan yang ketat, anda boleh mengelakkan salah tafsir dan memastikan hasil carian yang tepat. Untuk mendapatkan maklumat lanjut tentang persamaan dan perbandingan identiti dalam PHP, rujuk rujukan yang diberikan.
Atas ialah kandungan terperinci Mengapakah `in_array()` dan `array_search()` PHP Kadangkala Mengembalikan Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!