Dalam pengaturcaraan PHP, tatasusunan ialah salah satu jenis data yang paling biasa dan penting. Pustaka fungsi dalam PHP juga menyediakan pelbagai fungsi pemprosesan tatasusunan, salah satu fungsi penting ialah array_filter()
. Artikel ini akan meneroka prinsip penggunaan dan pelaksanaan biasa bagi fungsi array_filter()
.
array_filter()
Fungsi utama fungsi adalah untuk menapis elemen dalam tatasusunan. Apabila menggunakannya, kita perlu menghantar dalam tatasusunan sebagai parameter pertama, dan secara pilihan lulus dalam fungsi panggil balik parameter kedua untuk menapis elemen. Fungsi panggil balik ialah parameter pilihan Jika ia tidak dihantar, semua elemen "palsu" akan ditapis keluar secara lalai, seperti null
, false
, 0
, ''
, dsb.
Berikut ialah contoh mudah yang menunjukkan cara menggunakan fungsi array_filter()
untuk menapis tatasusunan:
// 定义一个示例数组 $numbers = array(100, 2, -3, 4, 5, -6); // 过滤回调函数,过滤掉小于等于 0 的元素 function positive($n) { return $n > 0; } // 过滤数组 $filtered = array_filter($numbers, "positive"); // 打印过滤后的数组 print_r($filtered);
Dalam contoh di atas, kami mentakrifkan tatasusunan $numbers
yang mengandungi Beberapa elemen digital . Kami juga mentakrifkan fungsi panggil balik positive()
, yang mengembalikan true
apabila nilai elemen lebih besar daripada 0, jika tidak mengembalikan false
. Akhir sekali, kami menapis tatasusunan dengan memanggil fungsi array_filter()
dan menghantar tatasusunan $numbers
dan fungsi panggil balik positive()
. Menjalankan contoh di atas akan mengeluarkan hasil berikut:
Array ( [0] => 100 [1] => 2 [3] => 4 [4] => 5 )
Seperti yang anda lihat, hanya bahagian positif elemen angka yang dikekalkan dalam tatasusunan $filtered
akhir, yang memenuhi syarat penapisan fungsi panggil balik.
Selain menghantar dalam fungsi panggil balik, fungsi array_filter()
juga menyokong passing dalam parameter tambahan, yang akan dihantar sebagai parameter kedua bagi fungsi panggil balik. Ini boleh berguna dalam situasi tertentu, contohnya, semasa menapis tatasusunan dan anda perlu menggunakan subskrip elemen tatasusunan sebagai syarat rujukan. Berikut ialah contoh menggunakan parameter $key
:
// 定义一个示例数组 $fruits = array("apple", "banana", "cherry", "date"); // 过滤回调函数,过滤掉下标是偶数的元素 function odd_indices($value, $index) { return $index % 2 != 0; } // 过滤数组,并保留下标是奇数的元素 $filtered = array_filter($fruits, "odd_indices", ARRAY_FILTER_USE_BOTH); // 打印过滤后的数组 print_r($filtered);
Dalam contoh di atas, kami telah menentukan tatasusunan $fruits
yang mengandungi beberapa elemen buah. Kami juga mentakrifkan fungsi panggil balik odd_indices()
yang akan menapis elemen tatasusunan dengan subskrip genap. Akhirnya, kami lulus dalam parameter ARRAY_FILTER_USE_BOTH
untuk menentukan bahawa fungsi panggil balik memerlukan dua parameter. Menjalankan contoh di atas akan menghasilkan keputusan berikut:
Array ( [1] => banana [3] => date )
Seperti yang anda lihat, tatasusunan $filtered
terakhir hanya mengekalkan elemen dengan subskrip ganjil, manakala elemen dengan subskrip genap ditapis keluar.
Memahami bagaimana fungsi array_filter()
dilaksanakan juga akan membantu kami menggunakannya dengan lebih baik. Dalam pelaksanaan PHP, fungsi array_filter()
terutamanya melaksanakan penapisan dengan merentasi tatasusunan. Dalam proses sebenar, apabila kita lulus dalam fungsi panggil balik, fungsi array_filter()
akan memanggil fungsi panggil balik sekali untuk setiap elemen dalam tatasusunan. Jika fungsi panggil balik mengembalikan true
, ini bermakna elemen ini perlu dikekalkan, jika tidak, ia akan ditapis keluar.
Terdapat juga beberapa perkara yang perlu diperhatikan, seperti apabila fungsi panggil balik mengembalikan nilai nol, elemen itu juga akan ditapis keluar. Di samping itu, jika parameter tambahan dimasukkan, parameter akan dihantar ke fungsi panggil balik sebagai parameter kedua fungsi panggil balik.
Apabila kita tidak meneruskan fungsi panggil balik, semua elemen "palsu" (contohnya: null
, false
, 0
, rentetan kosong, dsb.) ditapis secara lalai. Dalam pelaksanaan, fungsi array_filter()
menukar semua elemen kepada nilai boolean sebelum penapisan. Jika elemen ditukar kepada true
, ini bermakna elemen itu dikekalkan jika tidak, elemen itu ditapis keluar.
Walaupun pelaksanaan fungsi array_filter()
kelihatan mudah, ia menyediakan cara yang mudah dan berkuasa untuk menapis elemen tatasusunan. Bagi pembangun PHP, mahir dalam penggunaan dan prinsip pelaksanaan fungsi array_filter()
akan membawa banyak kemudahan dalam pembangunan sebenar.
Atas ialah kandungan terperinci PHP function exploration-array_filter(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!