PHPバージョン
4.0.5
/**
 * array_reduce()関数を使用して
 * 配列内の全ての要素を加算し累積された1つの値を生成する例
 */

// array_reduce()関数を適用する配列
$array = [1, 2, 3, 4, 5];

// 開発者が独自に作成したコールバック関数
function sum($total, $number) {
    // 前回の結果値と現在の要素を加算します
    return $total + $number;
}

// 配列内の全要素にコールバック関数を適用し集計した単一の結果値を返却
$result = array_reduce($array, 'sum');

echo $result; // 出力:15
array_reduce(array $array, callable $callback, mixed $initial = null): mixed
callback(mixed $carry, mixed $item): mixed
/**
 * コールバック関数
 *
 * 名前付き関数(ユーザー定義関数)や無名関数などで使用できます。
 */


/* 名前付き関数をコールバック関数として使用する場合 */
function callback($carry, $item) { // 名前付き関数の定義
    // 累積された単一の値の処理:累積結果を返す必要があります
}

array_reduce($array, 'callback'); // 定義した名前付き関数名を引数に文字列で直接渡す

/* 無名関数をコールバック関数として使用する場合 */
array_reduce($array, function($carry, $item) {
    // 累積された単一の値の処理:累積結果を返す必要があります
});
$numbers = [1, 2, 3, 4, 5];

$sum = array_reduce($numbers, function ($carry, $item) {
    return $carry + $item;
});

echo "配列の全ての要素を加算した結果: $sum"; // 出力:'配列の全ての要素を加算した結果: 15'
$numbers = [2, 3, 4, 5];

$product = array_reduce($numbers, function ($carry, $item) {
    return $carry * $item;
}, 1); // 初期の累積値を1に設定

echo "配列の全ての要素を乗算した結果: $product"; // 出力:'配列の全ての要素を乗算した結果: 120'
$numbers = [5, 3, 9, 2, 7];

$min = array_reduce($numbers, function ($carry, $item) {
    return ($item < $carry) ? $item : $carry;
}, $numbers[0]);

echo "配列の最小値: $min"; // 出力:'配列の最小値: 2'
$numbers = [5, 3, 9, 2, 7];

$max = array_reduce($numbers, function ($carry, $item) {
    return ($item > $carry) ? $item : $carry;
}, $numbers[0]);

echo "配列の最大値: $max"; // 出力:'配列の最大値: 9'
$words = ['Hello', ' ', 'World', '!'];

$concatenated = array_reduce($words, function ($carry, $item) {
    return $carry . $item;
}, '');

echo "配列の全ての要素を結合した結果: $concatenated"; // 出力:'配列の全ての要素を結合した結果: Hello World!'

// implode()関数を使用することも可能です
$implode = implode('', $words);
echo $implode;  // 出力:'Hello World!'