【Laravel】Collectionインスタンスから条件を満たす要素を抽出できるCollection::filterメソッドについて解説します

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、13年目エンジニアです。

この記事では、 LaravelでCollectionインスタンスから条件を満たす要素を抽出できるCollection::filterメソッドについて

  • Collection::filterメソッドとは
  • Collection::filterメソッドを使ったサンプルプログラム

と、丁寧に解説していきます。

前提条件:実行環境について

実行環境は以下の通りです。

OS Windows11
PHPのバージョン 8.2.4
Laravelのバージョン 10.45.1

この記事では

C:\Laravel

配下に【LaravelSample】という名前でプロジェクトを作成しています。
LaravelのCollectionインスタンスを生成できるCollection::collectメソッドについて解説

Collection::filterメソッドとは

Collection::filterメソッドとは、呼び出しているCollectionインスタンスを指定した関数でフィルタリングして条件を満たす要素のみのCollectionインスタンスを返すメソッドです。

Collectionクラスのメソッドを使うためには

を宣言する必要があります。

使い方サンプルは下記になります。

上記の例だと、フィルタリングしているのは、以下の箇所です。

偶数のもののみ抽出しています。

resultには以下の内容のCollectionインスタンスが返されます。

注意して頂きたいのが、インデックスの情報は保持されている、という点です。

ちなみに、もし抽出する条件を指定していなかった場合

  • false(bool型)
  • 空文字
  • 0(ゼロ)

というような、falseと判定されるものが取り除かれたCollectionインスタンスが返されます。

では、次の章で実際に使ってみます。

Collection::filterメソッドを解説するプログラムの概要

Collection::filterメソッドを解説するプログラムは、

  • コントローラー
  • Bladeビュー
  • web.php

3つを使います。

コントローラーは名前を【SampleController】とし、

LaravelSample\app\Http\Controllers\SampleController.php

に位置しています。

Collection::filterメソッドを使って、Collectionインスタンスをフィルタリングし、Bladeビューで表示させ中身を確認します。
表示するCollectionインスタンスは指定する条件を

  • 指定した場合
  • 指定しなかった場合

の2パターン用意します。

コントローラーからBladeビューに値を渡して表示する方法は以下の記事をご参考ください。

Bladeビューは名前を【sample.blade.php】とし、viewsディレクトリ直下に格納します。

web.phpには、【http://〇〇.〇〇.〇〇:8000/sample】でアクセスした場合、SampleControllerのCollection::collectメソッドを確認するメソッドを呼ぶように定義します。
ちなみにweb.phpとは、ルーティングを定義することができるファイルです。
詳しくはこちらの記事をご参考ください。

コントローラー:SampleController.phpのサンプルプログラム

mb_strlen関数とは、文字数を取得することができる関数です。
詳しくはこちらの記事をご参考ください。

Bladeビュー:sample.blade.phpのサンプルプログラム

web.phpのサンプルプログラム

実行して確認

Collection::collectメソッドの実行結果を確認します。
Laravelでサーバーを立ち上げるコマンドは

です。
サーバーを立ち上げるコマンドの詳細な説明は、こちらの記事をご参考ください。

  • http://〇〇〇.〇〇〇.〇〇〇.〇〇〇:8000/sample
    ※コマンドプロンプトに記載されているURL
  • http://localhost:8000/sample

どちらかのURLにアクセスします。

抽出条件を指定した場合は満たす要素のみ、抽出条件を指定しなかった場合はfalseとなる要素が取り除かれたCollectionインスタンスが返されていることを確認できました。

まとめ:Collection::filterメソッドを使ってみよう

以上がLaravelで指定したCollectionインスタンスから条件を満たす要素を抽出できるCollection::filterメソッドの解説でした!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

タイトルとURLをコピーしました