Menjelaskan Perbezaan antara array_map, array_walk dan array_filter
Fungsi tatasusunan dalam PHP menyediakan cara mudah untuk memanipulasi tatasusunan. Antaranya, array_map, array_walk dan array_filter biasanya digunakan. Walaupun mereka berkongsi persamaan, terdapat perbezaan utama dalam tingkah laku mereka.
Gambaran Keseluruhan Fungsi
-
array_map: Menggunakan fungsi panggil balik pada setiap elemen tatasusunan dan mengembalikan tatasusunan baharu yang mengandungi keputusan.
-
array_walk: Menggunakan fungsi panggil balik pada setiap elemen tatasusunan dan mengemas kini tatasusunan asal di tempatnya.
-
array_filter: Mengalih keluar elemen daripada tatasusunan berdasarkan fungsi panggil balik, mengembalikan tatasusunan baharu yang mengandungi hanya elemen yang melepasi syarat.
Perbezaan Utama
-
Pengubahsuaian Tatasusunan: array_walk mengubah suai tatasusunan asal, manakala array_map tidak.
-
Akses Utama: array_walk membenarkan akses kepada kekunci tatasusunan dalam fungsi panggil balik, manakala array_map tidak.
-
Nilai Pulangan: array_map mengembalikan tatasusunan baharu, manakala array_walk mengembalikan benar. array_filter juga mengembalikan tatasusunan baharu, tetapi hanya mengandungi elemen yang ditapis.
-
Lelaran: array_map boleh lelaran ke atas berbilang tatasusunan serentak, manakala array_walk hanya berulang pada satu tatasusunan.
- Pelulusan Data Arbitrari: array_walk boleh menerima parameter tambahan untuk dihantar ke panggilan balik, pilihan yang diperkenalkan dalam PHP 5.3.
-
Panjang Tatasusunan Dikembalikan: tatasusunan terhasil array_map sepadan dengan panjang tatasusunan input terbesar, manakala tatasusunan array_walk tidak mengubah panjang. array_filter mengembalikan tatasusunan yang sepadan dengan panjang elemen yang ditapis.
Contoh Ilustrasi
<code class="php">$a = [2.4, 2.6, 3.5];
// array_map
$b = array_map('floor', $a); // $a remains unchanged
print_r($b); // Output: [2, 2, 3]
// array_walk
array_walk($a, 'floor'); // Modifies $a
print_r($a); // Output: [2, 2, 3]
// array_filter
$c = array_filter($a, fn($v) => $v > 2.5); // Filter elements
print_r($c); // Output: [2.6, 3.5]</code>
Salin selepas log masuk
Kesimpulannya, array_map, array_walk dan array_filter masing-masing mempunyai peranan khusus dalam manipulasi tatasusunan. Memahami perbezaan mereka membolehkan pembangun memilih fungsi yang paling sesuai untuk tugas mereka.
Atas ialah kandungan terperinci Bila hendak menggunakan array_map, array_walk dan array_filter dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!