array_reduce - 配列を簡約化する
array_reduceは、ユーザー定義のアルゴリズムを使って、配列を簡約化する関数です。配列の各値を1つの値にまとめあげます。
構文
パラメータ
$array
対象の配列。
$callback
簡約化するためのコールバック関数。1回目は要素1と要素2、2回目は1回目(前回)の返り値と要素3、3回目は2回目の返り値と要素4、を引数にして実行される。最終的な返り値が、array_reduceの返り値となる。
$initial
初期値。この値を指定すると、1回目のコールバック関数に渡される引数が、この値と要素1になる。また、この値が空の配列を指定した場合の返り値となる。
返り値
mixed
最後に実行されたコールバック関数の返り値、または、第3引数に指定した初期値。
サンプルコード
<?php
$array = [ 1, 2, 3, 4, 5 ] ;
function callback( $a, $b ) {
return $a + $b ;
}
$response = array_reduce( $array, "callback" ) ;
デモ
使用例
array_sum()と同じことをする例です。値を足していきます。これを応用すれば、最大公約数を求めたりできます。
<?php
/*** このコードは編集できます。 ***/
$array = [ 1, 2, 3, 4, 5 ] ;
function callback ( $a, $b ) {
return $a + $b ;
}
$response = array_reduce( $array, "callback" ) ;
var_dump( $response ) ;
初期値
初期値を指定すると、最初のコールバック関数に渡される値が、初期値と最初の要素になります。また、空の配列に対して実行した時の返り値となります。
<?php
/*** このコードは編集できます。 ***/
$array = [ 1, 2, 3, 4, 5 ] ;
$initial = 1000 ;
function callback ( $a, $b ) {
return $a + $b ;
}
$response = array_reduce( $array, "callback", $initial ) ;
var_dump( $response ) ;
参考
- PHP: array_reduce
- PHPの公式リファレンス。
関連記事
- each
- 要素のキーと値を返してから、ポインタを1つ進める。
- array_walk
- ユーザー定義の関数を全ての要素に適用する。
- array_filter
- 配列をフィリタリングする。
- array_map
- 配列の各要素に処理を適用する。