現在の位置: ホーム> 最新記事一覧> array_filterとarray_reduceの違いは何ですか?シーンに応じて使用する方法は?

array_filterとarray_reduceの違いは何ですか?シーンに応じて使用する方法は?

gitbox 2025-05-29

PHPでは、 array_filterarray_reduceはどちらもアレイを処理するための強力な機能ですが、それらの使用とその仕組みは大きく異なります。これら2つの関数間の違いと使用シナリオを理解することは、より簡潔で効率的なコードを書くのに役立ちます。


1。array_filterの役割

array_filterは、配列要素をフィルタリングするために使用されます。コールバック関数を介して各要素をチェックします。 trueの返品値を持つ要素が保持され、return falseの要素が削除されます。簡単に言えば、条件に基づいて要件を満たす配列要素を除外することです。

コードの例

<?php
$arr = [1, 2, 3, 4, 5, 6];

// すべての偶数を除外します
$result = array_filter($arr, function($value) {
    return $value % 2 === 0;
});

print_r($result);
?>

出力結果:

 Array
(
    [1] => 2
    [3] => 4
    [5] => 6
)

注: array_filterは、要素のキー名を変更しません。


2。array_reduceの役割

array_reduceは、配列を単一の値に減らすために使用されます。アレイ要素をコールバック関数を介して累積値にマージします。これは、文字列の蓄積、合計、スプライシングなどの操作に適しています。

コードの例

<?php
$arr = [1, 2, 3, 4, 5];

// 配列のすべての要素の合計を計算します
$sum = array_reduce($arr, function($carry, $item) {
    return $carry + $item;
}, 0);

echo $sum;
?>

出力結果:

 15

$キャリーは累積値であり、コールバックはそれを更新し続け、最終的なリターンは削減結果です。


3。2つの本質的な違い

特徴array_filter array_reduce
効果配列をフィルタリングし、基準を満たすサブセットを返します配列を単一の値に「削減」します
返品値配列スカラーまたはオブジェクト
メイン用途条件付きフィルター要素集約、マージ、蓄積
予約されたキー名予約する重要な名前は関係ありません、値の蓄積が関係しています

4.シーンに応じて使用する方法は?

  • 配列から基準を満たす要素をフィルタリングする必要がある場合はarray_filterを使用します。例:18歳以上のすべてのユーザーを除外します。

  • 配列を値に変換する必要がある場合はarray_reduceを使用します。例:合計スコア、スプライス文字列を計算し、統計データを生成します。


5。例と組み合わせた

複数の注文金額を含む注文配列があるとします。

 <?php
$orders = [120, 250, 90, 300, 60];

// ろ過された量はより大きくなります100注文
$filteredOrders = array_filter($orders, function($amount) {
    return $amount > 100;
});

// 计算筛选后注文总金额
$total = array_reduce($filteredOrders, function($carry, $amount) {
    return $carry + $amount;
}, 0);

echo "より大きい100注文总金额是:" . $total;
?>

上記の例を介して、 Array_Filterが最初に条件を満たす注文をフィルタリングし、 Array_reduceを使用して合計することが明確にわかります。両方を一緒に使用すると、配列データを柔軟に処理できます。


まとめ

  • array_filterは要素のフィルタリングに焦点を当て、基準を満たす配列アイテムを保持します。

  • array_reduceは削減マージに焦点を合わせ、アレイを結果に「圧縮」します。

  • ニーズまたは組み合わせの使用に従って選択してください。これにより、コードがよりエレガントで効率的になります。