PHPで「array_map」、 `array_filter`、および` array_reduce`の違いを説明してください。
array_map、array_filter、およびarray_reduceの違いは次のとおりです。 2.Array_Filter条件を満たし、元の値を保持するか、キー値を変更する要素をフィルターします。 3.Array_Reduceアレイを結果に結合します。具体的には、array_mapは、正方形の操作など、すべての要素を配列内のすべての要素を変換して新しい配列を生成するのに適しています。 array_filterは、条件を満たす要素をフィルタリングするために使用され、誤った値とカスタムコールバック判断のデフォルトフィルタリングをサポートします。 array_reduceは、文字列の合計やスプライシングなど、蓄積を通じて配列を単一の値に圧縮し、初期値をカスタマイズするか、最初の要素をデフォルトで使用できます。 3つは、変更、フィルタリング、集約操作に対応する明確な用途を持っています。
PHPでは、 array_map
、 array_filter
、およびarray_reduce
、一般的に使用される3つの配列処理機能です。それらはすべて、コールバック関数と組み合わせて配列を操作することができますが、それぞれの用途は異なります。簡単に言えば:

-
array_map
:配列内の各要素を処理し、新しい配列を返します。 -
array_filter
:基準を満たす、元の値を保持する、またはキー値を変更するフィルター要素。 -
array_reduce
:summing、splicingなどの値に配列を「縮小」します。
以下の実際の使用と違いを見てみましょう。
array_map
:各要素の統一処理を実行します
この関数は、配列内の各要素で何らかの変換を実行する状況に適しています。配列を繰り返し、各要素をコールバック関数に渡してから、戻り値を収集して新しい配列を形成します。

一般的な使用例:
$ numbers = [1、2、3、4]; $ squared = array_map(fn($ n)=> $ n * $ n、$ numbers); //結果:[1、4、9、16]
- コールバック関数には返品値が必要です。そうしないと、位置が
null
になります。 - 複数の配列を渡すことができ、コールバックパラメーターは1つずつ対応します(たとえば、2つの配列が追加されます)。
- 複数の配列を通過し、キーが一貫性がない場合を除き、元の配列のキーは保持され、インデックスに従ってマージされます。
array_filter
:ルールに準拠した要素を残します
配列から基準を満たす特定の要素を選択する場合は、この関数を使用します。要素の値は変更されません(コールバックで積極的に変更しない限り)、留まるかどうかを決定するだけです。

使用する2つの方法:
- 1つのパラメーターのみが渡されます。「false値」(
0
、false
、null
、''
など)を自動的に除外します。 - コールバック関数をお持ちください:判断ロジックを自分で定義します。
$ numbers = [0、1、2、false、 ''、null、3]; $ result = array_filter($ numbers); //結果:[1 => 1、2 => 2、6 => 3]、「真の値」のみを残します $ ven = 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
最後の時間の結果であり、初めては初期値(3番目のパラメーター)です。 -
$item
現在処理されている要素です。 - 初期値はオプションです。渡されない場合、最初の要素はデフォルトで初期値であり、2番目の要素から処理されます。
少し複雑な例を見てみましょう。
$ words = ['apple'、 'banana'、 'cherry']; $ result = array_reduce($ words、fn($ str、$ word)=> $ str。 ' - '。$ word); //結果:「Apple-Banana-Cherry」
基本的にそれだけです。これらの3つの関数はコールバックと組み合わせて使用できますが、明確な責任があります。各map
変更、 filter
の一部を選択しreduce
。それを使用すると、目的に応じてより明確で簡潔なコードを記述できます。
以上がPHPで「array_map」、 `array_filter`、および` array_reduce`の違いを説明してください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

usefilter_var()tovalidateemailsyntaxandcheckdnsrr()toverifydomainmxrecords.example:$ email = "user@example.com"; if($ email、filter_validate_email)

useunserialize(serialize($ obj))fordeepcopying whenalldataisserializable;それ以外の場合は、__clone()tomaniallyduplicatededededededavoidsharedReferenceを実装します。

usearray_merge()tocombinearrays、urblitingduplicatestringkeysandreindexingnumerickeys; forsimplerconcatenation、inthphp5.6、usethesplatoperator [... $ array1、... $ array2]。

NamesSpacesInphporganizeCodeandPreventnamingConflictsByGroupingClasses、インターフェイス、関数、およびコンテンダントアンダースピフィクティフィクティフィクティフィクティフィクショナル

toupdateadatabaserecordinphp、firstconnectusingpdoormysqli、thenuseprepreadedStatementStoeaseaseesecuresQlupDateQuery.example:$ pdo = newpdo( "mysql:host = localhost; dbname = your_database"、$ username、$ username、$ sibsfar

the__call()メソッドは、customhandlingbyacceptingthemetodnameandarguments、ashownwhencollingdsslikesayhello()

この記事では、MySQLで条件付き集計を実行するためにケースステートメントを使用して特定のフィールドの条件付き合計とカウントを実現する方法について説明します。実用的なサブスクリプションシステムケースを通じて、レコードステータス(「終了」や「キャンセル」など)に基づいてイベントの合計期間と数を動的に計算する方法を示し、それにより、複雑な条件集計のニーズを満たすことができない従来の合計関数の制限を克服します。チュートリアルでは、左の結合の可能性のあるヌル値を扱う際の合体の重要性を詳細に機能させて、sum機能のケースステートメントの適用を分析します。

usepathinfo($ filename、pathinfo_extension)togetthefileextension; itreliailailavaliavelyhandlesmultipledotsendedgecases、returningtheextension(例えば、 "pdf")oranemptystringifnoneexists。
