【Laravel】 Laravel 5.7コレクション を一気に勉強(7) − has,implode,intersect,intersectByKeys,isEmpty




has()

パラメーターで指定したキーがコレクションに存在するかチェックします。
複数キーを指定することも可能です。
キーが1つの場合はそのキーが存在するかどうか、複数キーの場合はすべてのキーが存在する場合はtrue,1つでも存在しないキーが指定されたらfalseを返します。

$collection = collect(['name' => 'ichiro', 'no' => 51, 'team' => 'B']);
dump($collection->has('name'));
dump($collection->has(['name', 'team']));
dump($collection->has(['name', 'number']));
/*
true
true
false
*/

implode()

第一引数で指定したキーの値を第二引数で指定したセパレーターで区切った文字列を返します。
コレクションが値だけの場合、第一引数にセパレーターを指定することができます。

$collection = collect([
    ['name' => 'ichiro', 'no' => 51, 'team' => 'B'],
    ['name' => 'ichiro', 'no' => 31, 'team' => 'NY'],
    ['name' => 'matsui', 'no' => 55, 'team' => 'G'],
    ['name' => 'senichi', 'no' => 77, 'team' => 'D'],
]);
dump($collection->implode('name', ','));
dump(collect([0, 1, 2, 3])->implode(','));
/*
"ichiro,ichiro,matsui,senichi"
"0,1,2,3"
*/

intersect()

指定したパラメーターの値と一致するコレクションの値のみ抽出したコレクションを返します。

$collection = collect(['ichiro', 'matsui', 'senichi']);
dump($collection->intersect(['ichiro', 'yamada', 'senichi'])->all());
/*
array:2 [▼
  0 => "ichiro"
  2 => "senichi"
]
*/

intersectByKeys()

パラメーターで指定したキーを持つキー・値のセットを新しいコレクションとして返します。

$collection = collect(['name' => 'ichiro', 'no' => 51, 'team' => 'B']);
dump($collection->intersectByKeys(['name' => 'aaa', 'number' => 'bbb', 'team' => 'ccc'])->all());
/*
array:2 [▼
  "name" => "ichiro"
  "team" => "B"
]
*/

isEmpty()

コレクションが空の場合はtrue、それ以外はfalseを返します。

dump(collect(['a' => 1])->isEmpty());
dump(collect([])->isEmpty());
/*
false
true
*/