Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah array_map, array_walk dan array_filter berbeza dalam tingkah laku dan penggunaannya dalam PHP?

Bagaimanakah array_map, array_walk dan array_filter berbeza dalam tingkah laku dan penggunaannya dalam PHP?

DDD
DDDasal
2024-11-03 13:06:03971semak imbas

How do array_map, array_walk, and array_filter differ in their behavior and usage in PHP?

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!

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