目次
Filter Elements with array_filter
Reduce an Array to a Single Value with array_reduce
Combining the Three for Powerful Pipelines
ホームページ バックエンド開発 PHPチュートリアル array_map、array_filter、およびarray_reduceを使用したデータ変換をマスターします

array_map、array_filter、およびarray_reduceを使用したデータ変換をマスターします

Aug 07, 2025 pm 09:49 PM
PHP Indexed Arrays

使用array_map、array_filter和array_reduce可高效处理PHP数组。1. array_map用于转换数组每个元素,如将数字平方或字符串转整数;2. array_filter用于筛选符合条件的元素,如保留偶数或成年人年龄;3. array_reduce用于将数组归约为单个值,如求和或拼接字符串;三者可链式调用实现清晰的数据处理流程,提升代码可读性与可维护性,减少对foreach的依赖。

Mastering Data Transformation with array_map, array_filter, and array_reduce

When working with arrays in PHP, transforming and processing data efficiently is a common need. Functions like array_map, array_filter, and array_reduce are powerful tools that allow you to manipulate arrays in a clean, functional programming style. Mastering these functions can simplify your code, reduce bugs, and make your logic more readable.

Mastering Data Transformation with array_map, array_filter, and array_reduce

Here’s how each of these functions works and when to use them.


Transform Data with array_map

array_map applies a callback function to each element of one or more arrays and returns a new array with the transformed values. It doesn't modify the original array.

Mastering Data Transformation with array_map, array_filter, and array_reduce

Use case: You want to modify every element in an array in a consistent way.

$numbers = [1, 2, 3, 4, 5];

$squared = array_map(function($n) {
    return $n ** 2;
}, $numbers);

// Result: [1, 4, 9, 16, 25]

You can also use it with built-in functions:

Mastering Data Transformation with array_map, array_filter, and array_reduce
$strings = ['1', '2', '3'];
$integers = array_map('intval', $strings);

This is much cleaner than writing a foreach loop with manual pushing.

Tip: If you pass multiple arrays, array_map will pass corresponding elements to the callback. This is useful for combining arrays element-wise.


Filter Elements with array_filter

array_filter loops through an array and returns a new array containing only the elements that pass a given condition.

Use case: You want to remove unwanted elements based on a rule.

$numbers = [1, 2, 3, 4, 5, 6];

$evens = array_filter($numbers, function($n) {
    return $n % 2 === 0;
});

// Result: [2, 4, 6]

By default, array_filter preserves keys. If you want reindexed numeric keys, wrap it with array_values():

$evens = array_values(array_filter($numbers, fn($n) => $n % 2 === 0));

You can also filter associative arrays by key or value:

$ages = ['Alice' => 25, 'Bob' => 17, 'Charlie' => 30];

$adults = array_filter($ages, fn($age) => $age >= 18);
// Returns ['Alice' => 25, 'Charlie' => 30]

Reduce an Array to a Single Value with array_reduce

array_reduce walks through an array and builds up a single result by applying a callback function. It’s ideal for aggregations like sum, concatenation, or building complex structures.

Use case: You want to summarize or condense an array into one value.

$numbers = [1, 2, 3, 4];

$sum = array_reduce($numbers, function($carry, $item) {
    return $carry + $item;
}, 0);

// Result: 10

The third parameter is the initial value of $carry. If omitted, the first element is used (which can lead to bugs if the array is empty).

More advanced example: building a string from words:

$words = ['hello', 'world', 'php'];

$sentence = array_reduce($words, function($carry, $word) {
    return $carry === null ? $word : "$carry $word";
}, null);

// Result: "hello world php"

Or even transforming an array into an associative structure:

$pairs = [['name', 'Alice'], ['age', 25]];

$assoc = array_reduce($pairs, function($carry, $pair) {
    [$key, $value] = $pair;
    $carry[$key] = $value;
    return $carry;
}, []);

// Result: ['name' => 'Alice', 'age' => 25]

Combining the Three for Powerful Pipelines

One of the biggest advantages is that you can chain these functions to create readable data processing pipelines.

Example: Process a list of user ages, square each, keep only those over 100, then sum them.

$ages = [5, 10, 15, 20];

$result = array_reduce(
    array_filter(
        array_map(fn($age) => $age ** 2, $ages),
        fn($sq) => $sq > 100
    ),
    fn($carry, $item) => $carry + $item,
    0
);

// Step-by-step:
// map: [25, 100, 225, 400]
// filter: [225, 400]
// reduce: 625

While you could use loops, this functional style emphasizes what you're doing, not how—making the intent clearer.


Each of these functions encourages immutability and avoids side effects when used properly. They help you write more predictable, testable code.

Use array_map to transform, array_filter to select, and array_reduce to summarize. Combine them when needed, and you’ll find your array operations become much more expressive.

Basically, once you get comfortable with these three, you’ll reach for foreach a lot less.

以上がarray_map、array_filter、およびarray_reduceを使用したデータ変換をマスターしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPの大規模なインデックス付き配列のメモリ使用量を最適化します PHPの大規模なインデックス付き配列のメモリ使用量を最適化します Aug 02, 2025 pm 02:00 PM

ジェネレーター、ブロック処理、タイムリーなリリース変数を使用し、データ型を最適化し、スパースアレイを回避すると、PHPの大きな配列のメモリ使用量が大幅に減少する可能性があります。特定の戦略は優先度に基づいています。1。ジェネレーターを使用して、メモリを一定に保つためにデータを1つずつ生成します。 2。バッチでビッグデータを処理しますが、それらの一部のみが一度にロードされます。 3.処理が完了した直後に大きな変数を設定します。 4.文字列を整数で交換し、冗長データを減らして単一の要素のオーバーヘッドを減らします。 5.内部メモリ無駄を防ぐために、まばらなアレイを作成しないでください。 6。memory_get_usageを介してメモリの使用を監視します。最終的に、発電機と反復処理を組み合わせて、持続可能な低メモリ消費を実現します。この方法は、ログ分析やETLなどのデータ集約型シナリオに適しており、メモリオーバーフローを効果的に防ぐことができます

Array_columnとarray_multisortのパワーのロック解除マルディアルデータのデータ Array_columnとarray_multisortのパワーのロック解除マルディアルデータのデータ Aug 07, 2025 pm 10:57 PM

array_columnとarray_multisortを使用して、多次元配列を効率的にソートします。 2。抽出された列を元の配列と一緒に配列に渡し、指定された順序でソート(sort_ascなど)。 3.マルチレベルの並べ替え、最初の列で並べ替え、同じことが当てはまる場合は2番目の列で処理します。 4.配列を変更した後、列を再抽出する必要があり、キー名はデフォルトでリセットされることに注意してください。 5.この方法は高性能で、フィールドごとにソートするシナリオに適しています。比較関数をカスタマイズすることなく、明確で効率的なソートロジックを実現できます。

インデックス付き配列からタイプセーフコレクションオブジェクトまで:リファクタリングガイド インデックス付き配列からタイプセーフコレクションオブジェクトまで:リファクタリングガイド Aug 07, 2025 pm 11:22 PM

タイプセーフコレクションオブジェクトを使用して、タイプセーフティ、不明な構造、エラーが発生しやすいインデックスアレイの欠如の問題を解決します。 2。最初に、配列内の単一の要素に対して不変の値オブジェクト(ユーザークラスなど)を作成します。 3.複数の値オブジェクトをカプセル化して、コレクションクラス(usercollectionなど)を作成し、指定されたタイプのみが保存され、操作方法が提供されるようにします。 4.ネイティブアレイをビジネスコードのコレクションクラスに置き換え、IDE自動完了とタイプチェックサポートを取得します。 5。コレクションクラスにドメイン固有のメソッド(FindByID、フィルター、名前など)を追加して、表現と再利用性を高めます。 6.副作用を回避するために、新しいインスタンスを返すために、不変モード、追加操作、およびその他の操作を使用することをお勧めします。 7。小さなプロジェクトは面倒に見えるかもしれませんが、そうです

インデックス付き配列の効率的な検索:in_array()vs。array_search()vs。バイナリ検索 インデックス付き配列の効率的な検索:in_array()vs。array_search()vs。バイナリ検索 Aug 06, 2025 pm 05:55 PM

usein_array()forcheckingvalueexistenceinsmallunsortedarrays witho(n)timecomplexity.2.usearray_search()

Array_reduceを使用した高度なデータ集約手法 Array_reduceを使用した高度なデータ集約手法 Aug 08, 2025 pm 06:19 PM

Array_reduceは、PHPアレイの高度な集約を処理するための好ましいツールです。 1.地域ごとの販売記録の分類など、キーごとにデータをグループ化できます。 2。特定の製品の販売の計算や、同時に数量と総量のカウントの計算など、条件付き集約をサポートします。 3.ネストされた構造をフラット化および変換して、カテゴリ内の製品を平らにし、カテゴリ情報を添付できます。 4.ルックアップテーブルまたはインデックスを構築して、製品名から価格へのマッピングを実現できます。使用する場合は、常にアキュムレータを返し、初期値を正しく初期化し、副作用を回避し、それにより効率的で再利用可能なデータ処理を実現する必要があります。

最新のPHP:破壊とインデックス付きアレイを使用したスプレッドオペレーターを活用する 最新のPHP:破壊とインデックス付きアレイを使用したスプレッドオペレーターを活用する Aug 08, 2025 pm 06:39 PM

PHPは、[]インデックス付き配列の値を変数に直接割り当てることができるバージョン7.1以降の[]構文を使用して配列分解をサポートします。 2。...演算子を使用して、配列拡張(JavaScriptの拡張機能ズと同様)を実装します。これは、配列または転送関数パラメーターにマージされます。 3. ...演算子で残りの要素をキャプチャし、RESTパラメーターをシミュレートできます。 4.実際のアプリケーションには、CSV行の処理、関数返品値の解体、構成のマージが含まれます。 5.注...インデックス配列にのみ適用される場合、連想配列は使用またはarray_merge()を使用する必要があり、単一行の深いネストされた解体をサポートせず、ステップで処理する必要があります。最新のPHPにはJSの脱構築と拡張構文はまったくありませんが、[]と...を通じて同様の効果を達成できます。

比較パフォーマンス分析:array_push vs. [] shorthand syntax 比較パフォーマンス分析:array_push vs. [] shorthand syntax Aug 04, 2025 am 10:24 AM

[] syntaxisfasterandmoreefcientthanarray_push()foraddingsingleelementsbecaudeItavoidsfunctioncalloverhead; 2.array_push()isusefuleforaddingmultdindingmultdingmultipleElementsinecallenturnStheNewArraylents、making uitabultableform-elementionertionortionortionorywhenthecounti

コアPHPアレイ操作の大きなO:パフォーマンス分析 コアPHPアレイ操作の大きなO:パフォーマンス分析 Aug 05, 2025 pm 07:09 PM

PHPアレイ操作の時間の複雑さは、操作タイプによって異なります。キー操作のパフォーマンスは次のとおりです。1。配列の読み取り、書き込み、割り当てはO(1)です。 PHPはハッシュテーブルを使用して実装するため、平均キー検索は一定の時間です。 2。unset($ array ['key'])はo(1)であり、マークの削除のみがすぐに再インデックスではありません。 3。ARRAY_UNSHIFT()およびARRAY_SHIFT()はO(n)です。これは、すべての要素を再配置する必要があるためです。 4.配列の最後に追加またはポップします([]、array_push、array_popなど)はo(1)で、スタックまたはキュー操作に適しています。 5。IN_ARRAY()およびarray_search()はo(n)であり、線形に渡す必要があります。

See all articles