PHP 言語は発展し続けるため、PHP 言語が提供する機能は常に更新され、改善されています。注目すべき関数の 1 つは array_reduce() です。この関数は効率的な配列のマージ操作を実装し、配列データをより適切に処理するのに役立ちます。
この記事では、PHP8 の array_reduce() 関数を使用して効率的な配列の結合を実現する方法を紹介し、実際のアプリケーションにおけるその利点と実用性を探ります。
array_reduce() 関数は、PHP の高階関数であり、次の処理を通じて配列を項目ごとにマージします。コールバック関数、単一の値。関数のプロトタイプは次のとおりです。
mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )
配列パラメータは処理する必要のある配列、コールバック パラメータはコールバック関数、初期パラメータはコールバック関数の初期値です。コールバック関数のプロトタイプは次のとおりです。
mixed callback ( mixed $carry , mixed $value )
キャリー パラメータはコールバック関数の以前の戻り値であり、値パラメータは現在処理される配列要素です。
array_reduce() 関数を使用すると、配列を簡単に反復処理して 1 つの値に結合できます。
次に、2 つの配列 array1 と array2 があり、これら 2 つの配列を 1 つの配列にマージしたいとします。 PHP で array_merge() 関数を使用してみます。その使用法は次のとおりです:
$array3 = array_merge($array1, $array2);
ただし、配列内に重複した項目がある場合、array_merge() 関数は重複した項目を削除します。機能は適用されません。
PHP8 の array_reduce() 関数を使用して、配列を効率的に結合してみることができます。具体的な実装方法は次のとおりです。
$array1 = ['a', 'b', 'c']; $array2 = ['d', 'e', 'f']; $result = array_reduce($array2, function($carry, $value) { $carry[] = $value; return $carry; }, $array1);
この例では、2 つの配列 $array1 と $array2 を定義し、$array2 の配列を項目ごとに $array1 に追加します。 array_reduce() 関数を使用して $array2 配列を走査し、それを $carry パラメーターに 1 つずつ追加し、最後に $carry パラメーターを返しました。初期パラメータは $array1 配列に設定されているため、最終的には $array2 配列が $array1 配列に追加されます。
array_reduce() 関数を使用する利点は、配列のマージ操作を実装するためのループの使用を回避できることです。コードの可読性と効率性が向上します。さらに、array_reduce() 関数の使用には、次の利点があります。
array_reduce() 関数は、多くの実際のアプリケーション シナリオで使用できます。いくつかの使用例を次に示します。
複数の配列を 1 つの配列に結合する
$members = array_merge($array1, $array2, $array3);
は次のように変更できます:
$members = array_reduce([$array1, $array2, $array3], 'array_merge', []);
Calculate配列の加重平均
function weighted_average($values, $weights) { $weighted_sum = array_reduce($values, function($sum, $value) use ($weights) { $sum += array_shift($weights) * $value; return $sum; }, 0); $total_weight = array_reduce($weights, function($sum, $value) { $sum += $value; return $sum; }, 0); return $weighted_sum / $total_weight; }
同じキー値に従って複数の2次元配列をマージします
$records = [ ['id' => 1, 'name' => 'A'], ['id' => 2, 'name' => 'B'], ['id' => 3, 'name' => 'C'], ]; $details = [ ['id' => 1, 'age' => 20], ['id' => 2, 'age' => 25], ['id' => 3, 'age' => 30], ]; $merged = array_reduce($records, function ($carry, $item) use ($details) { $index = array_search($item['id'], array_column($details, 'id')); $carry[] = array_merge($item, $details[$index]); return $carry; }, []);
以上がPHP8 の array_reduce() 関数を使用して効率的な配列マージを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。