Membezakan array_map, array_walk dan array_filter dalam PHP
Walaupun array_map, array_walk dan array_filter adalah semua fungsi PHP yang mengambil fungsi panggil balik sebagai hujah untuk melakukan tindakan pada tatasusunan, terdapat perbezaan yang ketara dalam tingkah laku dan penggunaannya.
Perbezaan Utama:
1. Pengubahsuaian Nilai:
array_map tidak boleh mengubah suai nilai dalam tatasusunan input, manakala array_walk boleh. Ini kerana array_map mencipta tatasusunan baharu dengan hasil fungsi panggil balik, manakala array_walk mengubah suai tatasusunan input di tempatnya.
2. Akses Kunci Tatasusunan:
peta_susun tidak boleh beroperasi pada kekunci tatasusunan, manakala tatasusunan boleh. Ini bermakna array_walk boleh melakukan operasi berdasarkan kedua-dua nilai dan kekunci tatasusunan.
3. Nilai Pulangan:
array_map mengembalikan tatasusunan baharu yang mengandungi hasil fungsi panggil balik, manakala array_walk mengembalikan benar jika fungsi panggil balik berjaya digunakan pada semua elemen tatasusunan input.
4. Lelaran Berbilang Tatasusunan:
array_map boleh menerima berbilang tatasusunan sebagai input dan mengulanginya secara selari, membenarkan operasi pada berbilang tatasusunan sekaligus. array_walk, sebaliknya, beroperasi pada satu tatasusunan sahaja.
5. Hantaran Argumen Panggilan Balik:
array_walk membenarkan parameter arbitrari tambahan dihantar ke fungsi panggil balik, memberikan fleksibiliti dalam tindakan yang dilakukan dalam panggilan balik.
6. Panjang Tatasusunan Dikembalikan:
array_map menghasilkan tatasusunan hasil dengan panjang yang sama dengan tatasusunan input terbesar. array_walk tidak mengembalikan tatasusunan dan tidak boleh mengubah bilangan elemen dalam tatasusunan input. array_filter mengembalikan subset tatasusunan asal berdasarkan fungsi penapisan dan mengekalkan kekunci asal.
Contoh:
Pertimbangkan kod berikut:
<code class="php">$a1 = array(2.4, 2.6, 3.5); $a2 = array(2.4, 2.6, 3.5); array_map('floor', $a1); // $a1 remains unchanged array_walk($a2, function (&$v) { $v = floor($v); }); // modifies $a2</code>
Dalam kes pertama, array_map mencipta tatasusunan baharu dengan nilai lantai setiap elemen dalam $a1, tetapi $a1 itu sendiri kekal tidak diubah suai. Dalam kes kedua, array_walk mengubah suai terus elemen $a2 dengan membulatkannya ke bawah kepada integer terdekat.
Atas ialah kandungan terperinci Bagaimanakah array_map, array_walk dan array_filter berbeza dalam tingkah laku dan penggunaannya dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!