• Laravel

array_reduceの使用例

array_reduceはPHPの組み込み関数です。

・PHP公式
https://www.php.net/manual/en/function.array-reduce.php

関数の使用方法の説明は公式におまかせするとして、この記事ではこんな使用例がありますという紹介です。

例えば下記のようなコードを書いたとします。

public function getAmountIncludingTax(array $postings)
{
  $totalPrice = 0;
  foreach ($postings as $postings) {
      $totalPrice += $postings->price;
  }
  return compact('totalPrice');
}

あるクラスの中にあるメソッドだけを切り取ってます。

$totalPriceを初期値で設定して$positngsをループで回して、priceカラムを足し合わせるといったものです。

これを下記のようにarray_reduceで書くことができます。

public function getAmountIncludingTax(array $postings)
{
    $totalPrice = array_reduce($postings, function ($sum, $posting) {
        return $sum + $posting->price;
    }, 0);
    return compact('totalPrice');
}

array_reduceの第二引数(コールバック部分)で足し合わせをしていて、第三引数の0は$totalPriceの初期値の0になります。

どちらが直感的にわかりやすいかは人それぞれだと思いますが、array_reduceを使用すると少しすっきりしますね。

以上、誰かの参考になれれば幸いです。