描述php中的' array_map”,' array_filter”和`array_reduce”之間的差異。
array_map、array_filter 和array_reduce 的區別在於:1.array_map 對每個元素做統一處理,返回新數組;2.array_filter 篩選符合條件的元素,保留原值或修改鍵值;3.array_reduce 將數組濃縮成一個結果。具體來說,array_map 適用於對數組中所有元素進行變換,如平方操作生成新數組;array_filter 用於篩選出滿足條件的元素,支持默認過濾假值和自定義回調判斷;array_reduce 則通過累積方式將數組壓縮為單一值,如求和或拼接字符串,初始值可自定義或默認使用第一個元素。三者用途明確,分別對應修改、篩选和聚合操作。
在PHP 中, array_map
、 array_filter
和array_reduce
是三個常用的數組處理函數,它們都可以配合回調函數來操作數組,但各自用途不同。簡單來說:

-
array_map
:對數組中的每個元素做處理,返回新數組。 -
array_filter
:篩選符合條件的元素,保留原值或修改鍵值。 -
array_reduce
:把數組“縮成”一個值,比如求和、拼接等。
下面分別來看它們的實際用法和區別。
array_map
:對每個元素做統一處理
這個函數適用於你想對數組裡的每一個元素都進行某種變換的情況。它會遍歷數組,把每個元素傳給回調函數,然後收集返回值組成一個新的數組。

常見用法示例:
$numbers = [1, 2, 3, 4]; $squared = array_map(fn($n) => $n * $n, $numbers); // 結果:[1, 4, 9, 16]
- 回調函數必須有返回值,否則該位置會變成
null
。 - 可以傳多個數組,回調參數一一對應(例如兩個數組相加)。
- 原數組的鍵會被保留,除非你傳了多個數組且鍵不一致,這時會按索引合併。
array_filter
:留下符合規則的元素
當你想從數組裡挑出某些符合條件的元素時,就用這個函數。它不會改變元素的值(除非你在回調中主動改),只是決定留不留下來。

兩種使用方式:
- 只傳一個參數:自動過濾掉“假值”(如
0
,false
,null
,''
)。 - 帶回調函數:自己定義判斷邏輯。
$numbers = [0, 1, 2, false, '', null, 3]; $result = array_filter($numbers); // 結果:[1 => 1, 2 => 2, 6 => 3],只留下“真值” $even = array_filter($numbers, fn($n) => is_int($n) && $n % 2 === 0); // 篩選出是整數且為偶數的值
注意:
- 如果你要保留原始的鍵名,記得用
ARRAY_FILTER_USE_BOTH
標誌。 - 回調函數返回
true
就保留,false
就排除。
array_reduce
:把數組濃縮成一個結果
這是最靈活但也最容易理解錯的一個。它不是用來生成新數組,而是通過不斷“累積”結果,把整個數組壓縮成一個值,比如總和、字符串拼接、複雜計算等。
$numbers = [1, 2, 3, 4]; $sum = array_reduce($numbers, fn($carry, $item) => $carry $item, 0); // 結果:10
關鍵點:
-
$carry
是上一次的結果,第一次是初始值(第三個參數)。 -
$item
是當前處理的元素。 - 初始值可選,如果不傳,默認第一個元素作為初始值,從第二個開始處理。
舉個稍微複雜的例子:
$words = ['apple', 'banana', 'cherry']; $result = array_reduce($words, fn($str, $word) => $str . '-' . $word); // 結果:'apple-banana-cherry'
基本上就這些。這三個函數雖然都能配合回調使用,但職責分明: map
改每個元素, filter
挑出一部分, reduce
把全部變成一個結果。用的時候根據目的選擇,可以寫出更清晰、簡潔的代碼。
以上是描述php中的' array_map”,' array_filter”和`array_reduce”之間的差異。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT
人工智慧支援投資研究,做出更明智的決策

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

useunSerialize(serialize($ obj))fordeepcopyingwhenalldataiSerializable;否則,exhiment__clone()tomanallyDuplicateNestedObjectedObjectSandAvoidSharedReference。

usearray_merge()tocombinearrays,oftritingDupritingDuplicateStringKeySandReIndexingNumericKeys; forsimplerconcatenation,尤其是innphp5.6,usethesplatoperator [... $ array1,... $ array2]。

NamespacesinPHPorganizecodeandpreventnamingconflictsbygroupingclasses,interfaces,functions,andconstantsunderaspecificname.2.Defineanamespaceusingthenamespacekeywordatthetopofafile,followedbythenamespacename,suchasApp\Controllers.3.Usetheusekeywordtoi

__call()methodistred prightedwhenaninAccessibleOrundEfinedMethodiscalledonAnaBject,允許customhandlingByAcceptingTheMethodNameAndarguments,AsshoheNpallingNengallingUndEfineDmethodSlikesayHello()

toupdateadatabaseRecordInphp,firstConnectusingpDoormySqli,thenusepreparedStatementStoExecuteAsecuteAsecuresqurupDatequery.example.example:$ pdo = newpdo(“ mySql:mysql:host = localHost; localhost; localhost; dbname; dbname = your_database = your_database',yous_database',$ username,$ username,$ squeaste;

本文深入探討了在MySQL中如何利用CASE語句進行條件聚合,以實現對特定字段的條件求和及計數。通過一個實際的預訂系統案例,演示瞭如何根據記錄狀態(如“已結束”、“已取消”)動態計算總時長和事件數量,從而克服傳統SUM函數無法滿足複雜條件聚合需求的局限性。教程詳細解析了CASE語句在SUM函數中的應用,並強調了COALESCE在處理LEFT JOIN可能產生的NULL值時的重要性。

usepathinfo($ fileName,pathinfo_extension)togetThefileextension; itreliablyhandlesmandlesmultipledotsAndEdgecases,返回theextension(例如,“ pdf”)oranemptystringifnoneexists。
