


Huraikan perbezaan antara `array_map`,` array_filter`, dan `array_reduce` dalam php.
Perbezaan antara array_map, array_filter dan array_reduce adalah: 1.array_map secara seragam memproses setiap elemen dan mengembalikan array baru; 2.Array_filter menapis elemen yang memenuhi syarat, mengekalkan nilai asal atau mengubah nilai utama; 3.Array_reduce memelukkan array menjadi hasilnya. Khususnya, array_map sesuai untuk mengubah semua elemen dalam array, seperti operasi kuadrat untuk menghasilkan array baru; array_filter digunakan untuk menapis unsur -unsur yang memenuhi syarat -syarat, dan menyokong penapisan lalai nilai palsu dan penghakiman panggilan balik tersuai; array_reduce memampatkan array ke dalam satu nilai melalui pengumpulan, seperti penjumlahan atau rentetan splicing, dan nilai awal boleh disesuaikan atau elemen pertama digunakan secara lalai. Ketiganya mempunyai kegunaan yang jelas, sepadan dengan pengubahsuaian, penapisan dan operasi agregasi.
Dalam php, array_map
, array_filter
dan array_reduce
adalah tiga fungsi pemprosesan array yang biasa digunakan. Mereka semua boleh digunakan dalam kombinasi dengan fungsi panggilan balik untuk mengendalikan tatasusunan, tetapi kegunaan masing -masing adalah berbeza. Ringkas:

-
array_map
: Proses setiap elemen dalam array dan kembalikan array baru. -
array_filter
: Unsur penapis yang memenuhi kriteria, mengekalkan nilai asal atau mengubah suai nilai utama. -
array_reduce
: "mengecilkan" array ke dalam nilai, seperti penjumlahan, splicing, dll.
Mari kita lihat penggunaan sebenar dan perbezaan mereka di bawah.
array_map
: Lakukan pemprosesan bersatu bagi setiap elemen
Fungsi ini sesuai untuk situasi di mana anda ingin melakukan beberapa transformasi pada setiap elemen dalam array. Ia akan melangkah ke atas array, lulus setiap elemen ke fungsi panggil balik, dan kemudian kumpulkan nilai pulangan untuk membentuk array baru.

Contoh penggunaan biasa:
$ nombor = [1, 2, 3, 4]; $ squared = array_map (fn ($ n) => $ n * $ n, $ nombor); // Keputusan: [1, 4, 9, 16]
- Fungsi panggil balik mesti mempunyai nilai pulangan, jika tidak, kedudukan akan menjadi
null
. - Pelbagai susunan boleh diluluskan, dan parameter panggil balik sesuai dengan satu (contohnya, dua tatasusunan ditambah).
- Kekunci array asal akan dikekalkan melainkan jika anda lulus pelbagai tatasusunan dan kunci tidak konsisten, dan kemudian mereka akan digabungkan mengikut indeks.
array_filter
: Tinggalkan elemen yang mematuhi peraturan
Gunakan fungsi ini apabila anda ingin memilih unsur -unsur tertentu yang memenuhi kriteria dari array. Ia tidak akan mengubah nilai elemen (melainkan jika anda secara aktif mengubahnya dalam panggilan balik), ia hanya memutuskan sama ada untuk tinggal atau tidak.

Dua cara untuk digunakan:
- Hanya satu parameter yang diluluskan : secara automatik menapis "nilai palsu" (seperti
0
,false
,null
,''
). - Bawa fungsi panggilan balik : Tentukan logik penghakiman sendiri.
$ nombor = [0, 1, 2, palsu, '', null, 3]; $ result = array_filter ($ nombor); // hasil: [1 => 1, 2 => 2, 6 => 3], hanya meninggalkan "nilai sejati" $ even = array_filter ($ nombor, fn ($ n) => is_int ($ n) && $ n % 2 === 0); // menapis nilai yang beruntung dan bahkan nombor
Notis:
- Jika anda ingin menyimpan nama kunci asal, ingatlah untuk menggunakan bendera
ARRAY_FILTER_USE_BOTH
. - Jika fungsi panggil balik kembali
true
, ia akan dikekalkan, danfalse
ia akan dikecualikan.
array_reduce
: tumpukan array menjadi hasilnya
Ini adalah yang paling fleksibel tetapi juga yang paling mudah untuk salah faham. Ia tidak digunakan untuk menghasilkan array baru, tetapi untuk terus "mengumpul" hasil dan memampatkan keseluruhan array ke dalam nilai, seperti jumlah, splicing rentetan, pengiraan kompleks, dll.
$ nombor = [1, 2, 3, 4]; $ sum = array_reduce ($ angka, fn ($ carry, $ item) => $ carry $ item, 0); // Keputusan: 10
Mata Utama:
-
$carry
adalah hasil kali terakhir, kali pertama adalah nilai awal (parameter ketiga). -
$item
adalah elemen yang kini diproses. - Nilai awal adalah pilihan. Sekiranya ia tidak diluluskan, elemen pertama dimulakan sebagai nilai awal dan diproses dari yang kedua.
Mari memberi contoh yang lebih rumit:
$ words = ['Apple', 'Banana', 'Cherry']; $ result = array_reduce ($ words, fn ($ str, $ word) => $ str. '-'. $ word); // Hasil: 'Apple-Banana-Cherry'
Pada dasarnya itu sahaja. Walaupun ketiga -tiga fungsi ini boleh digunakan bersempena dengan panggilan balik, mereka mempunyai tanggungjawab yang jelas: map
mengubah setiap elemen, filter
memilih sebahagian daripadanya, reduce
semuanya ke dalam satu hasil. Apabila menggunakannya, anda boleh menulis kod yang lebih jelas dan ringkas mengikut tujuannya.
Atas ialah kandungan terperinci Huraikan perbezaan antara `array_map`,` array_filter`, dan `array_reduce` dalam php.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

UseFilter_var () TOVALIDATEMailSyntaxandCheckDnsrr () TOVERIFYDOnMAINMXRECORDS.example: $ e -mel = "user@example.com"; if (filter_var ($ e -mel, filter_email) && checkDnsrr (expode '

UseUnserialize (Serialize ($ obj)) fordeepcopyingWhenallDataisserizable; jika tidak, pelaksanaan__clone () tomanuallyduplicatenestedObjectsandavoidsharedReferences.

UseArray_Merge () toCombineArrays, OverwritingDuplicateStringKeySandreIndexingNumericKeys; forsimplerconcatenation, terutamaInphp5.6, usethesplatoperator [... $ array1, ... $ array2].

Namespacesinphporganizecodeandpreventnamingnamingconflictsbygroupinglasses, antara muka, fungsi, dan constantsunderaspecificname.2.defineAnamespaceusingthenamespaceywordetopofafile, diikuti olehbythenamespaceakenam

The__call () methodistriggeredWhenaninaccessibleorundefinedmethodiscalledonanObject, membolehkanCustomHandlylyAccepteThemeThodnamnamnamnents, asshownwhencallingundefinedmethodslikesayhello ()

Toupdateadatabaserecordinphp, firstConnectusingPdoormySqli, thenusePePreparedStatementStoExecuteAseCureSqlupDateQuery.example: $ pdo = newpdo ("mysql: host = localhost; dbName = your_database: $ userbase: $ userbase"

Artikel ini membincangkan secara mendalam bagaimana menggunakan pernyataan kes untuk melakukan pengagregatan bersyarat di MySQL untuk mencapai penjumlahan bersyarat dan mengira bidang tertentu. Melalui kes sistem langganan praktikal, ia menunjukkan bagaimana secara dinamik mengira jumlah tempoh dan bilangan peristiwa berdasarkan status rekod (seperti "akhir" dan "membatalkan"), dengan itu mengatasi batasan fungsi jumlah tradisional yang tidak dapat memenuhi keperluan pengagregatan bersyarat kompleks. Tutorial menganalisis penerapan pernyataan kes dalam jumlah fungsi secara terperinci dan menekankan pentingnya bersatu ketika berurusan dengan nilai nol yang mungkin dari gabungan kiri.

UsePathinfo ($ FileName, pathinfo_extension) togetthefileextension; itreliLyHandlesmultipledotsandgecases, returnTheExtension (mis., "Pdf") Oranemptystringifnoneexists.
