概要
- PHPの組み込み関数である
array_reduce
についてちょっと調べたのでまとめておく。
内容
- 指定された関数を与えられた配列の値を用いでどんどん処理していくものらしい。
使い方の例
-
下記に当該関数の使い方の例を記載する。
array_reduce(配列, '関数名');
使い方の実例
-
$a
の配列の値をすべて足して返してほしい場合、下記のような処理になる。<?php function sum($carry, $item) { $carry += $item; return $carry; } $a = [1, 2, 3, 4, 5]; $int = array_reduce($a, 'sum'); echo $int; // 15
-
下記の処理はあくまで準備段階となる。array_reduce関数の引数を定義している。
function sum($carry, $item) { $carry += $item; return $carry; } $a = [1, 2, 3, 4, 5];
-
$a
の配列の要素がなくなるまで下記の処理が繰り返される。- array_reduce関数はまず、第一引数の
$a
配列のインデックス0の値(intの1)を取り出し、sum関数の$item
に格納し処理を実行する。 - 上記処理の結果は
$carry
に格納される。 - 次に
$a
の配列のインデックス1の値(intの2)を取り出し、sum関数の$item
に格納し処理を実行する。この時$carry
には一つ前の処理でインデックス0の値をsumで処理した結果が入っている。 - 上記処理の結果は
$carry
に格納される。($carry
の値が更新)
- array_reduce関数はまず、第一引数の
-
array_reduce関数は第三引数の指定も可能で、インデックス0を実行する時の
$carry
の値を設定する事ができる。<?php function sum($carry, $item) { $carry += $item; return $carry; } $a = [1, 2, 3, 4, 5]; $int = array_reduce($a, 'sum', 100); echo $int; //115