関数の概要
PHPの array_reduce 関数は、配列のすべての要素を一つの値にまとめるために使います。配列の各要素に対してユーザー定義のコールバック関数を適用し、その結果を蓄積して最終的な単一の値を返します。例えば、配列の合計や積、連結などを計算するときに便利です。
パラメータの説明
array: 処理対象の配列を指定します。callback: 配列の各要素に適用する関数名または無名関数です。引数は蓄積値と現在の配列要素の2つを受け取ります。initial(省略可): 集約処理の初期値を指定します。省略すると配列の最初の要素が初期値として使われます。
戻り値
処理後の単一の値が返されます。配列が空の場合、初期値を指定していればその値が返り、指定がなければ NULL が返ります。
使用例
基本的な使い方(合計を求める)
<?php
$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, function($carry, $item) {
return $carry + $item;
}, 0);
echo $sum; // 15
?>
この例では、配列の要素をすべて足し合わせて合計を計算しています。初期値として 0 を渡しているため、正しい合計が求められます。
文字列の連結
<?php
$words = ["PHP", "は", "便利", "です"];
$result = array_reduce($words, function($carry, $item) {
return $carry . $item;
}, '');
echo $result; // PHPは便利です
?>
この例では、配列内の文字列をすべて連結して一つの文字列にまとめています。初期値は空文字列に設定しています。
配列内の最大値を求める
<?php
$values = [12, 34, 5, 78, 23];
$max = array_reduce($values, function($carry, $item) {
return ($item > $carry) ? $item : $carry;
}, PHP_INT_MIN);
echo $max; // 78
?>
ここでは配列から最大値を見つけ出しています。初期値には非常に小さい整数値を設定し、配列の中で最大の値を比較して返しています。
関連する関数
array_map: 配列の各要素に関数を適用し、新しい配列を返します。array_filter: 条件に合う要素だけを抽出した配列を返します。array_walk: 配列の各要素に対して関数を適用しますが、返り値はありません。
まとめ
array_reduce は配列の要素を一つの値にまとめたい時に非常に役立つ関数です。合計や連結、最大値・最小値の取得など、さまざまな集約処理を簡潔に書けるため、配列操作の中でも重要な役割を果たします。初期値の設定方法やコールバック関数の使い方を理解することで、実務でも応用の効く便利なテクニックとなります。
