PHPでは、 array_filterとarray_reduceはどちらもアレイを処理するための強力な機能ですが、それらの使用とその仕組みは大きく異なります。これら2つの関数間の違いと使用シナリオを理解することは、より簡潔で効率的なコードを書くのに役立ちます。
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は、要素のキー名を変更しません。
array_reduceは、配列を単一の値に減らすために使用されます。アレイ要素をコールバック関数を介して累積値にマージします。これは、文字列の蓄積、合計、スプライシングなどの操作に適しています。
<?php
$arr = [1, 2, 3, 4, 5];
// 配列のすべての要素の合計を計算します
$sum = array_reduce($arr, function($carry, $item) {
return $carry + $item;
}, 0);
echo $sum;
?>
出力結果:
15
$キャリーは累積値であり、コールバックはそれを更新し続け、最終的なリターンは削減結果です。
特徴 | array_filter | array_reduce |
---|---|---|
効果 | 配列をフィルタリングし、基準を満たすサブセットを返します | 配列を単一の値に「削減」します |
返品値 | 配列 | スカラーまたはオブジェクト |
メイン用途 | 条件付きフィルター要素 | 集約、マージ、蓄積 |
予約されたキー名 | 予約する | 重要な名前は関係ありません、値の蓄積が関係しています |
配列から基準を満たす要素をフィルタリングする必要がある場合は、 array_filterを使用します。例:18歳以上のすべてのユーザーを除外します。
配列を値に変換する必要がある場合は、 array_reduceを使用します。例:合計スコア、スプライス文字列を計算し、統計データを生成します。
複数の注文金額を含む注文配列があるとします。
<?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は、削減マージに焦点を合わせ、アレイを結果に「圧縮」します。
ニーズまたは組み合わせの使用に従って選択してください。これにより、コードがよりエレガントで効率的になります。
関連タグ:
array_filter