CakePHPにおけるreduceを使ってシンプルに真偽判定

CakePHPのreduce関数を使ってシンプルに真偽判定することをやってみる。

ドキュメントはこちら:

Aggregation

以下はリストの中身にnullのものが存在しているかどうかを確かめるものである。

$t = [1, 2, null];

$all_ok = collection($this->list)
    ->reduce(
        function ($acc, $t) {
            return $acc && !is_null($t);
        },
        true // このtrueは初期値
    );

reduceの第二引数は初期値である。

以下の関数などの場合は、初期値が0でそこからreduceで足していくということになる。

$totalPrice = $collection->reduce(function ($accumulated, $orderLine) {
    return $accumulated + $orderLine->price;
}, 0);

CakePHPのcollectionsはすごく有用だが、CakePHP以外で使わないので練習量が足りなくていつまでたっても身につかない。。。