isNotEmpty()
コレクションが空でない場合true、空の場合はfalseを返します。
dump(collect(['a' => 1])->isNotEmpty());
dump(collect([])->isNotEmpty());
/*
true
false
*/
keyBy()
指定したパラメーターをキーにしたコレクションを返します。
$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->keyBy('name'));
/*
Collection {#424 ▼
#items: array:3 [▼
"ichiro" => array:3 [▼
"name" => "ichiro"
"no" => 31
"team" => "NY"
]
"matsui" => array:3 [▼
"name" => "matsui"
"no" => 55
"team" => "G"
]
"senichi" => array:3 [▼
"name" => "senichi"
"no" => 77
"team" => "D"
]
]
}
*/
パラメーターにコールバックを指定すると、コールバックの結果をキーにしたコレクションを生成します。
dump($collection->keyBy(function($item) {
return strtoupper($item['name']);
}));
/*
Collection {#425 ▼
#items: array:3 [▼
"ICHIRO" => array:3 [▼
"name" => "ichiro"
"no" => 31
"team" => "NY"
]
"MATSUI" => array:3 [▼
"name" => "matsui"
"no" => 55
"team" => "G"
]
"SENICHI" => array:3 [▼
"name" => "senichi"
"no" => 77
"team" => "D"
]
]
}
*/
keys()
コレクションのキーリストを返します。
$collection = collect(['name' => 'ichiro', 'no' => 51, 'team' => 'B']);
dump($collection->keys());
/*
Collection {#422 ▼
#items: array:3 [▼
0 => "name"
1 => "no"
2 => "team"
]
}
*/
last()
コールバックで指定した条件に一致する最後の値を返します。
コールバックを指定しない場合はコレクションの最後の値を返します。
dump(collect($array)->last(function($value, $key) {
return $value >= 18;
}));
dump(collect($array)->last());
/*
19
19
*/
macro()
macroメソッドを使って新しいメソッドを追加することができます。
$array = [];
for($i = 0; $i < 20; $i++) {
$array[] = $i;
}
Collection::macro('over3', function() {
return $this->filter(function($value) {
return $value >= 3 ? $value : null;
});
});
dump(collect($array)->over3()->all());
/*
array:17 [▼
3 => 3
4 => 4
5 => 5
6 => 6
7 => 7
8 => 8
9 => 9
10 => 10
11 => 11
12 => 12
13 => 13
14 => 14
15 => 15
16 => 16
17 => 17
18 => 18
19 => 19
]
*/