はじめに
みなさんはある配列の特定の条件を満たしている値がだけ取得したい時はどうしますか?
半年前の自分であれば
・ループしてif文で条件決めて、、、
・array_filterで特定条件の値だけ、、、
などのことを行なっていたと思いますが、現在はCollectionを使うことが多くなりました。
なので備忘録ということも混みでCollectionについて書こうと思います。
Collectionとは??
Collectionとは簡単に言うと配列を簡単に操作するための便利なラッパーです。
使用することでフィルタリングやソートといった工程も簡潔に行うことが可能になります。
Collectionの使用方法
まず行うこと(準備)
namespace(名前空間)を書く。
use Illuminate\Support\Collection;
collectionに使用する配列を用意し、collectionを使用
// サンプルの配列
$array = [1, 2, 3, 4, 5];
// Collectionの生成
$collection = collect($array);
これだけデータを操作する準備が整いました!
Collectionで使用できるメソッドは多いので自分が開発でよく使用するメソッドを3つ紹介します。
filter
filterメソッドは文字通りデータをフィルタリングするときによく利用します。
フィルタリングする条件は数値の比較、文字列の一致も可能です。
// サンプルの配列
$array = [1, 2, 3, 4, 5];
$collection = collect($array);
$filter = $collection->filter(function (int $value, int $key) {
return $value > 3;
})->all();
// 実行結果:[4, 5];
pluck
plickメソッドは配列のキーに対応している値を返します。
$users = [
['id' => 1, 'name' => 'Harry'],
['id' => 2, 'name' => 'Ron'],
['id' => 3, 'name' => 'Jordge'],
];
$collection = collect($users);
// 'name' キーに基づいて値を抽出
$names = $collection->pluck('name')->all();
実行結果:['John', 'Jane', 'Jordge']
map
mapメソッドはcollectionに変換したデータを繰り返しで返します。またmapメソッド内で新しい値に変更することもできます。
// サンプルのデータ
$data = [1, 2, 3, 4, 5];
$collection = collect($data);
// mapメソッドを使用して各要素を2倍にする
$doubledValues = $collection->map(function ($value) {
return $value * 2;
})->all();
//実行結果 : [2, 4, 6, 8, 10]
最後に
今回は簡単ではありますが、Collectionについて紹介しました。
他にもCollectionで出来ることは多いのでぜひ試してみてください!!