集める
- コレクションの拡張
はじめに
CollectionIlluminate\Support\Collection
クラスは、配列データのカプセル化をより読みやすく、より簡単に処理できるようにします。具体的な例については、以下のコードを参照してください。collect
補助関数を使用して配列から新しいコレクション インスタンスを作成し、各要素に対してstrtoupper
関数を実行してから、空の要素をすべて削除します。ご覧のとおり、クラスを使用すると、他のメソッドへの呼び出しを連鎖させて、基になる配列に対するスムーズなマップと操作の削減を実現できます。一般に、コレクションは不変です。つまり、各
Collection
すべてのメソッドは新しいCollection
インスタンスを返します。コレクションの作成前述のように、
collectヘルパー関数は指定された配列のコレクション 新しい
{tip} 通常、Eloquent クエリによって返される結果はIlluminate\Support\Collection
インスタンスを返します。したがって、次のようなコレクションを簡単に作成できます:$collection = collect(['taylor', 'abigail', null])->map(function ($name) { return strtoupper($name); })->reject(function ($name) { return empty($name); });
Collection
インスタンスです。
拡張コレクションコレクションは「マクロ可能」(マクロ可能) であるため、他のメソッドを追加できます。実行時に
Collectionクラスに追加します。たとえば、次のコードを使用して、
toUpper
メソッドをCollection
クラスに追加します。
通常、コレクション マクロはサービス プロバイダー内で宣言する必要があります。$collection = collect([1, 2, 3]);
利用可能なメソッド
次のドキュメントの内容では、
Collection
クラスの各メソッドについて説明します。すべてのメソッドは、連鎖アクセスを介してエレガントな方法で配列を操作できることに留意してください。さらに、ほとんどすべてのメソッドは新しいCollection
インスタンスを返すため、必要に応じてコレクションの元のコピーを保存できます。すべて
平均
avg
チャンク
折りたたむ
combine
concat
contains
containsStrict
count
crossJoin
dd
diff
diffAssoc
diffKeys
ダンプ
各
各スプレッド
すべての
例外
フィルター
first
firstWhere
フラットマップ
フラット化
flip
forget
forPage
get
groupBy
has
implode
intersect
intersectByKeys
isEmpty
isNotEmpty
keyBy
keys
last
マクロ
make
map
mapInto
mapSpread
mapToGroups
mapWithKeys
max
median
merge
min
#モード
nth
のみ
パッド
パーティション
パイプ
引き抜く
ポップ
プリペンド
プル
プッシュ
プット
ランダム
削減
拒否
リバース
検索
シフト
シャッフル
スライス
some
sort
sortBy
sortByDescsortKeys
sortKeysDesc
splice
split
sum
take
タップ
回数
toArray
toJson
transform
union
unique
uniqueStrict
unless
unlessEmpty
unlessNotEmpty
unwrap
values
when
When Empty
WhenNot Empty
where
whereStrict
whereBetween
whereIn
whereInStrict
whereInstanceOf
whereNotBetween
whereNotIn
whereNotInStrict
wrap
zip##メソッドリスト
all()
all
メソッドは、このコレクションによって表される基になる配列を返します:use Illuminate\Support\Str;Collection::macro('toUpper', function () { return $this->map(function ($value) { return Str::upper($value); }); });$collection = collect(['first', 'second']); $upper = $collection->toUpper(); // ['FIRST', 'SECOND']
##average()
#avg()
avgメソッドは指定された値を返します。
平均
キー:collect([1, 2, 3])->all();// [1, 2, 3]
##chunk()
メソッドは、コレクションを指定されたサイズの複数の小さなコレクションに分割します。$average = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->avg('foo'); // 20 $average = collect([1, 1, 2, 4])->avg(); // 2
このメソッドは、
Bootstrap などのグリッド システムを使用するビューに特に適しています。グリッドに表示したい Eloquent モデルのコレクションがあると想像してください:$collection = collect([1, 2, 3, 4, 5, 6, 7]); $chunks = $collection->chunk(4); $chunks->toArray(); // [[1, 2, 3, 4], [5, 6, 7]]
#collapse()collapse
メソッドは、複数の配列のコレクションを配列のコレクションにマージします:@foreach ($products->chunk(3) as $chunk) <div class="row"> @foreach ($chunk as $product) <div class="col-xs-4"> {{ $product->name }} </div> @endforeach </div> @endforeach
concat()
concat
メソッドは、指定された
arrayまたはコレクション値をコレクションの末尾に追加します:
$collection = collect(['name', 'age']); $combined = $collection->combine(['George', 29]); $combined->all(); // ['name' => 'George', 'age' => 29]
## contains()
containsメソッドは、コレクションに指定されたコレクション項目が含まれているかどうかを判断します。
contains$collection = collect(['John Doe']); $concatenated = $collection->concat(['Jane Doe'])->concat(['name' => 'Johnny Doe']); $concatenated->all(); // ['John Doe', 'Jane Doe', 'Johnny Doe']
メソッドを使用することもできます。キー/値のペアのセットを渡すには、そのキー/値のペアがコレクションに存在するかどうかを確認できます。
contains
最後に、$collection = collect(['name' => 'Desk', 'price' => 100]); $collection->contains('Desk'); // true $collection->contains('New York'); // false
メソッドを使用してコールバックを渡すこともできます。独自の実際のテストを実行する関数:
contains$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 100], ]); $collection->contains('product', 'Bookcase'); // false
メソッドは、コレクション項目の値をチェックするときに「緩和された」比較を使用します。つまり、整数値を持つ文字列は次のようになります。同じ値に等しい整数として扱われます。対照的に、
containsStrict
メソッドは、フィルターに「厳密な」比較を使用します。
containsStrict()
と同じですcontainsこのメソッドは
メソッドは似ていますが、「厳密な」比較を使用してすべての値を比較します。
count()count
メソッドはこのコレクションを返します。コレクション内のアイテムの総数:$collection = collect([1, 2, 3, 4, 5]); $collection->contains(function ($value, $key) { return $value > 5; }); // false
CrossJoin
メソッドは、指定された配列またはコレクションの値を相互結合し、考えられるすべての順列のデカルト積を返します:
$collection = collect([1, 2, 3, 4]); $collection->count(); // 4
ddメソッドは、コレクション項目を出力し、スクリプトの実行を中断するために使用されます:
スクリプトの実行を中断したい場合は、代わりに$collection = collect([1, 2]); $matrix = $collection->crossJoin(['a', 'b']); $matrix->all(); /* [ [1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], ] */ $collection = collect([1, 2]); $matrix = $collection->crossJoin(['a', 'b'], ['I', 'II']); $matrix->all(); /* [ [1, 'a', 'I'], [1, 'a', 'II'], [1, 'b', 'I'], [1, 'b', 'II'], [2, 'a', 'I'], [2, 'a', 'II'], [2, 'b', 'I'], [2, 'b', 'II'], ] */
dump
メソッドを使用してください。
diffメソッドはコレクションを結合します他のコレクションまたは純粋な PHPArrays
と値の比較を実行します。次に、元のコレクションには存在するが、指定されたコレクションには存在しない値を返します。
$collection = collect(['John Doe', 'Jane Doe']); $collection->dd(); /* Collection { #items: array:2 [ 0 => "John Doe" 1 => "Jane Doe" ] } */
##diffAssoc( )diffAssocメソッドは、キーと値に基づいて別のコレクションまたは PHParrayと比較します。このメソッドは、元のコレクションが指定されたコレクションに存在しないキーと値のペアを返します:
$collection = collect([1, 2, 3, 4, 5]); $diff = $collection->diff([2, 4, 6, 8]); $diff->all(); // [1, 3, 5]
コレクションの印刷後にスクリプトの実行を終了する場合は、diffKeys()
diffKeys
メソッドは、別のコレクションまたは PHParray
のキーを比較し、そこに存在するキーを返します。元のコレクション キーに対応するキー/値のペアが指定されたコレクションに存在しません:$collection = collect([ 'color' => 'orange', 'type' => 'fruit', 'remain' => 6 ]); $diff = $collection->diffAssoc([ 'color' => 'yellow', 'type' => 'fruit', 'remain' => 3, 'used' => 6 ]); $diff->all(); // ['color' => 'orange', 'remain' => 6]
#dump()
dump
コレクション項目の印刷に使用されるメソッド:
$collection = collect([ 'one' => 10, 'two' => 20, 'three' => 30, 'four' => 40, 'five' => 50, ]); $diff = $collection->diffKeys([ 'two' => 2, 'four' => 4, 'six' => 6, 'eight' => 8, ]); $diff->all(); // ['one' => 10, 'three' => 30, 'five' => 50]
# を使用します。代わりに ##dd
メソッドを使用してください。
each()
メソッドはループに使用されますコレクション項目を取得し、コールバック関数に渡します:each
$collection = collect(['John Doe', 'Jane Doe']); $collection->dump(); /* Collection { #items: array:2 [ 0 => "John Doe" 1 => "Jane Doe" ] } */
コレクション項目のループを中断したい場合は、コールバック関数で
false を返します:$collection->each(function ($item, $key) { // });
eachSpread
メソッドは、コレクション項目をループするために使用されます。ネストされた各コレクション項目はコールバック関数に渡されます:$collection->each(function ($item, $key) { if (/* 某些条件 */ ) { return false; } });
コールバック関数で
false
を返すことでループを終了できます:$collection = collect([['John Doe', 35], ['Jane Doe', 33]]); $collection->eachSpread(function ($name, $age) { // });
every
コレクションが空の場合、メソッドを使用して、コレクション内の各要素が指定された条件に合格するかどうかを確認できます。テスト:
$collection->eachSpread(function ($name, $age) { return false; });
every
は true を返します:
collect([1, 2, 3, 4])->every(function ($value, $key) { return $value > 2; }); // false
Exceptメソッドは、指定されたキーを除くコレクション内のすべてのコレクション項目を返します:
excel
および$collection = collect([]); $collection->every(function($value, $key) { return $value > 2; }); // true
only
メソッドに対応します。filterメソッドは指定されたコールバック関数はコレクションをフィルターし、指定された条件テストに合格したコレクション項目のみを保持します。
を返すコレクション内のすべての要素が削除されます。 :$collection = collect(['product_id' => 1, 'price' => 100, 'discount' => false]); $filtered = $collection->except(['price', 'discount']); $filtered->all(); // ['product_id' => 1]
コールバック関数が指定されていない場合、
false$collection = collect([1, 2, 3, 4]); $filtered = $collection->filter(function ($value, $key) { return $value > 2; }); $filtered->all(); // [3, 4]
と
filter はreject
#first()firstメソッドに対応します。
メソッドはコレクションを返します条件を指定して最初の要素をテストします。$collection = collect([1, 2, 3, null, false, '', 0, []]); $collection->filter()->all(); // [1, 2, 3]
パラメーターを渡さずに
nullfirst
メソッドを呼び出して、コレクション内の最初の要素を取得することもできます。コレクションが空の場合、が返されます:
collect([1, 2, 3, 4])->first(function ($value, $key) { return $value > 2; }); // 3
オプションで「深さ」パラメーターを渡すことができます:firstWhere()
firstWhere
このメソッドは、指定されたキーと値のペアを含むコレクション内の最初の要素を返します:collect([1, 2, 3, 4])->first(); // 1
You
firstWhere
メソッドは、演算子を使用して呼び出すこともできます。$collection = collect([ ['name' => 'Regena', 'age' => null], ['name' => 'Linda', 'age' => 14], ['name' => 'Diego', 'age' => 23], ['name' => 'Linda', 'age' => 84], ]); $collection->firstWhere('name', 'Linda'); // ['name' => 'Linda', 'age' => 14]
where メソッドと同様に、引数を
firstWhere
メソッドに渡すことができます。この場合、firstWhere
メソッドは、指定されたキーに対して値が「true」である最初のコレクション項目を返します:$collection->firstWhere('age', '>=', 18); // ['name' => 'Diego', 'age' => 23]
flatMap()
flatMap
メソッドはコレクションを反復処理し、コレクション内の各値を指定されたコールバック関数に渡します。コレクション項目を変更し、コールバック関数を通じてそれらを返すことで、変更された新しいコレクションを形成できます。次に、セットから変換された配列は同じレベルになります。$collection->firstWhere('age'); // ['name' => 'Linda', 'age' => 14]
## flatten()
flatten
メソッドは、多次元コレクションを 1 次元コレクションに変換します:
$collection = collect([ ['name' => 'Sally'], ['school' => 'Arkansas'], ['age' => 28] ]); $flattened = $collection->flatMap(function ($values) { return array_map('strtoupper', $values); }); $flattened->all(); // ['name' => 'SALLY', 'school' => 'ARKANSAS', 'age' => '28'];
$collection = collect(['name' => 'taylor', 'languages' => ['php', 'javascript']]); $flattened = $collection->flatten(); $flattened->all(); // ['taylor', 'php', 'javascript'];
この例では、flatten
を呼び出します。深さパラメータが渡されない場合、ネストされた配列は 1 次元に変換され、その後
['iPhone 6S', 'Apple', 'Galaxy S7' 、「Samsung」] が返されます。深さパラメータを渡すと、返される配列のレベル数を制限できます。#flip()
メソッドはキーを交換しますおよび対応する値:flip
$collection = collect([ 'Apple' => [ ['name' => 'iPhone 6S', 'brand' => 'Apple'], ], 'Samsung' => [ ['name' => 'Galaxy S7', 'brand' => 'Samsung'] ], ]); $products = $collection->flatten(1);$products->values()->all(); /* [ ['name' => 'iPhone 6S', 'brand' => 'Apple'], ['name' => 'Galaxy S7', 'brand' => 'Samsung'], ] */
##forget()
forget
メソッドは、指定されたキーによってコレクションから対応するコンテンツを削除します:$collection = collect(['name' => 'taylor', 'framework' => 'laravel']); $flipped = $collection->flip();$flipped->all(); // ['taylor' => 'name', 'laravel' => 'framework']
新しい変更されたコレクションは返されません。元のコレクションを直接変更します。{note} ほとんどのコレクション メソッドとは異なり、
forgetforPage
メソッド指定されたページ番号のコレクション項目を含む新しいコレクション。このメソッドは、最初の引数としてページ番号を受け入れ、2 番目の引数としてページごとに表示されるアイテムの数を受け入れます:
$collection = collect(['name' => 'taylor', 'framework' => 'laravel']); $collection->forget('name');$collection->all(); // ['framework' => 'laravel']
get
を返します。メソッドは、指定されたキーを持つコレクション アイテムを返します。キーがコレクションに存在しない場合は、
null$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]); $chunk = $collection->forPage(2, 3);$chunk->all(); // [4, 5, 6]
選択したデフォルト値を 2 番目の引数として渡すことができます:
$collection = collect(['name' => 'taylor', 'framework' => 'laravel']); $value = $collection->get('name'); // taylor
コールバック関数をデフォルト値として渡すこともできます。指定されたキーが存在しない場合は、コールバック関数の結果が返されます:
$collection = collect(['name' => 'taylor', 'framework' => 'laravel']); $value = $collection->get('foo', 'default-value'); // default-value
groupBy()
groupBy
メソッドは、指定されたキーに基づいてコレクション項目をグループ化します:$collection->get('email', function () { return 'default-value'; }); // default-value
コールバック関数を Replaces に渡すことができます文字列の
キー
。このコールバック関数は、グループ化に使用するキーの値を返す必要があります。$collection = collect([ ['account_id' => 'account-x10', 'product' => 'Chair'], ['account_id' => 'account-x10', 'product' => 'Bookcase'], ['account_id' => 'account-x11', 'product' => 'Desk'], ]); $grouped = $collection->groupBy('account_id');$grouped->toArray(); /* [ 'account-x10' => [ ['account_id' => 'account-x10', 'product' => 'Chair'], ['account_id' => 'account-x10', 'product' => 'Bookcase'], ], 'account-x11' => [ ['account_id' => 'account-x11', 'product' => 'Desk'], ], ] */
複数のグループ化基準に配列を渡すことができます。各配列要素は、多次元配列内の対応するレベルに対応します:
$grouped = $collection->groupBy(function ($item, $key) { return substr($item['account_id'], -3); }); $grouped->toArray(); /* [ 'x10' => [ ['account_id' => 'account-x10', 'product' => 'Chair'], ['account_id' => 'account-x10', 'product' => 'Bookcase'], ], 'x11' => [ ['account_id' => 'account-x11', 'product' => 'Desk'], ], ] */
#has()
has
指定されたキーがコレクションに存在するかどうかを確認するメソッド:
$data = new Collection([ 10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']], 20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']], 30 => ['user' => 3, 'skill' => 2, 'roles' => ['Role_1']], 40 => ['user' => 4, 'skill' => 2, 'roles' => ['Role_2']], ]); $result = $data->groupBy([ 'skill', function ($item) { return $item['roles']; }, ], $preserveKeys = true); /* [ 1 => [ 'Role_1' => [ 10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']], 20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']], ], 'Role_2' => [ 20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']], ], 'Role_3' => [ 10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']], ], ], 2 => [ 'Role_1' => [ 30 => ['user' => 3, 'skill' => 2, 'roles' => ['Role_1']], ], 'Role_2' => [ 40 => ['user' => 4, 'skill' => 2, 'roles' => ['Role_2']], ], ], ]; */
#implode ()
implodeメソッドは、コレクション項目をマージするために使用されます。そのパラメータはコレクション項目のタイプによって異なります。コレクションに配列またはオブジェクトが含まれている場合は、結合したいプロパティのキーと、それらを「結合」するために値の間に入れたい文字列を渡す必要があります:
If the collection contains単純な文字列または数値。このメソッドの唯一のパラメータとして「スプライシング」に使用される文字列を渡すだけです:$collection = collect(['account_id' => 1, 'product' => 'Desk', 'amount' => 5]); $collection->has('product'); // true $collection->has(['product', 'amount']); // true $collection->has(['amount', 'price']); // false
$collection = collect([ ['account_id' => 1,'product' => 'Desk'], ['account_id' => 2, 'product' => 'Chair'], ]); $collection->implode('product', ', '); // Desk, Chair
intersect()
intersectメソッドは、指定された
array
に存在しない値を元のコレクションから削除します。またはコレクション。生成されたコレクションは、元のコレクションのキーを保持します:collect([1, 2, 3, 4, 5])->implode('-'); // '1-2-3-4-5'
##intersectByKeys()
メソッドは、指定されたintersectByKeys
array
またはコレクションに存在しないキーを元のコレクションから削除します:
$collection = collect(['Desk', 'Sofa', 'Chair']); $intersect = $collection->intersect(['Desk', 'Chair', 'Bookcase']); $intersect->all(); // [0 => 'Desk', 2 => 'Chair']
##isEmpty()
コレクションが空の場合、
trueisEmpty
メソッドはを返し、それ以外の場合は戻ります。
コレクションの場合が空でない場合、false
:$collection = collect([ 'serial' => 'UX301', 'type' => 'screen', 'year' => 2009 ]); $intersect = $collection->intersectByKeys([ 'reference' => 'UX404', 'type' => 'tab', 'year' => 2011 ]); $intersect->all(); // ['type' => 'screen', 'year' => 2009]
isNotEmpty
を返し、それ以外の場合はメソッドは
truefalse
を返します:
collect([])->isEmpty(); // true
keyBy
メソッドは、指定されたキーをコレクションのキーとして使用します。複数のコレクション項目が同じキーを持つ場合、新しいコレクションには最後のコレクション項目のみが表示されます。
このメソッドでコールバック関数を渡すこともできます。このコールバック関数によって返された値は、コレクションのキーとして使用されます:collect([])->isNotEmpty(); // false
$collection = collect([ ['product_id' => 'prod-100', 'name' => 'Desk'], ['product_id' => 'prod-200', 'name' => 'Chair'], ]); $keyed = $collection->keyBy('product_id');$keyed->all(); /* [ 'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'], 'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'], ] */
keysメソッドはコレクション内のすべてのキーを返します:$keyed = $collection->keyBy(function ($item) { return strtoupper($item['product_id']); }); $keyed->all(); /* [ 'PROD-100' => ['product_id' => 'prod-100', 'name' => 'Desk'], 'PROD-200' => ['product_id' => 'prod-200', 'name' => 'Chair'], ] */
last()
lastlast
このメソッドは、指定された条件テストに合格したコレクション内の最後の要素を返します。また、渡さないでください。 入力パラメータを指定してメソッドを呼び出し、コレクション内の最後の要素を取得します。コレクションが空の場合は、
null
を返します:$collection = collect([ 'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'], 'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'], ]); $keys = $collection->keys(); $keys->all(); // ['prod-100', 'prod-200']
#macro()
メソッドを使用すると、実行時にstatic
macroCollection
make()クラスにメソッドを追加できます。詳細については、
Extended Collectionsのドキュメントを参照してください。
static
「コレクションの作成make
メソッドで A を作成できます新しいコレクションインスタンス。map
メソッドはコレクションを走査しますおよびマージ 各値を指定されたコールバック関数に渡します。このコールバック関数はコレクション項目を任意に変更して返すことができ、それによって変更されたコレクション項目の新しいコレクションを生成します:
collect([1, 2, 3, 4])->last(function ($value, $key) { return $value < 3; }); // 2
{note} 他のほとんどのコレクション メソッドと同様に、
map
コレクション インスタンスが返されますが、元のコレクションは変更されません。元のコレクションを変更する場合は、transform
mapInto()コレクションを反復処理し、コンストラクターに値を渡すことで指定されたクラスの新しいインスタンスを作成するメソッド:
collect([1, 2, 3, 4])->last(); // 4
mapSpreadメソッドは、コレクション項目を走査し、ネストされた各項目の値を指定されたコールバック関数に割り当てることができます。コールバック関数はコレクション項目を自由に変更して返すことができ、それによって変更されたコレクション項目の新しいコレクションを生成します:
$collection = collect([1, 2, 3, 4, 5]); $multiplied = $collection->map(function ($item, $key) { return $item * 2; }); $multiplied->all(); // [2, 4, 6, 8, 10]
mapToGroupsメソッドは、指定されたコールバック関数を使用してコレクション項目をグループ化します。コールバック関数は、単一のキーと値のペアを含む連想配列を返し、その結果、グループ化された値の新しいコレクションが生成されます:class Currency{ /** * Create a new currency instance. * * @param string $code * @return void */ function __construct(string $code) { $this->code = $code; } } $collection = collect(['USD', 'EUR', 'GBP']); $currencies = $collection->mapInto(Currency::class); $currencies->all(); // [Currency('USD'), Currency('EUR'), Currency('GBP')]
mapWithKeysメソッドはコレクションを反復処理し、各値を指定されたコールバック関数に渡します。このコールバック関数は、単一のキーと値のペアを含む連想配列を返します:$collection = collect([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); $chunks = $collection->chunk(2); $sequence = $chunks->mapSpread(function ($even, $odd) { return $even + $odd; }); $sequence->all(); // [1, 5, 9, 13, 17]
##max()maxこのメソッドは、指定されたキーの最大値を返します:$collection = collect([ [ 'name' => 'John Doe', 'department' => 'Sales', ], [ 'name' => 'Jane Doe', 'department' => 'Sales', ], [ 'name' => 'Johnny Doe', 'department' => 'Marketing', ] ]); $grouped = $collection->mapToGroups(function ($item, $key) { return [$item['department'] => $item['name']]; }); $grouped->toArray(); /* [ 'Sales' => ['John Doe', 'Jane Doe'], 'Marketing' => ['Johnny Doe'], ] */ $grouped->get('Sales')->all(); // ['John Doe', 'Jane Doe']
#
median()
median
メソッドは、指定されたキーの 中央値 を返します:$collection = collect([ [ 'name' => 'John', 'department' => 'Sales', 'email' => 'john@example.com' ], [ 'name' => 'Jane', 'department' => 'Marketing', 'email' => 'jane@example.com' ] ]); $keyed = $collection->mapWithKeys(function ($item) { return [$item['email'] => $item['name']]; }); $keyed->all(); /* [ 'john@example.com' => 'John', 'jane@example.com' => 'Jane', ] */
##merge()
merge
メソッドは、指定された配列またはコレクションを元のコレクションにマージします。 。指定されたコレクション アイテムの文字列キーが元のコレクションの文字列キーと一致する場合、指定されたコレクション アイテムの値は元のコレクションの値を上書きします:
$max = collect([['foo' => 10], ['foo' => 20]])->max('foo'); // 20 $max = collect([1, 2, 3, 4, 5])->max(); // 5
If 指定されたコレクション アイテムのキーが数値の場合、これらの値はコレクションの最後に追加されます:$median = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->median('foo'); // 15 $median = collect([1, 1, 2, 4])->median(); // 1.5
##min()メソッドは、指定されたキーの最小値を返します:
$collection = collect(['product_id' => 1, 'price' => 100]); $merged = $collection->merge(['price' => 200, 'discount' => false]); $merged->all(); // ['product_id' => 1, 'price' => 200, 'discount' => false]
## mode()
このメソッドは、指定されたキーのmode
mode
を返します:
$collection = collect(['Desk', 'Chair']); $merged = $collection->merge(['Bookcase', 'Door']); $merged->all(); // ['Desk', 'Chair', 'Bookcase', 'Door']
nth()
メソッドは、n 番目ごとの要素で構成される新しいコレクションを作成します:nth
$min = collect([['foo' => 10], ['foo' => 20]])->min('foo'); // 10 $min = collect([1, 2, 3, 4, 5])->min(); // 1
2 番目の引数としてオフセット位置を渡すことを選択できます:
$mode = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->mode('foo'); // [10] $mode = collect([1, 1, 2, 4])->mode(); // [1]
##only()only
メソッドは、コレクション内の指定されたキーを持つすべてのコレクション項目を返します。$collection = collect(['a', 'b', 'c', 'd', 'e', 'f']); $collection->nth(4); // ['a', 'e']
と
excelpadonly
は、メソッドは次の目的で使用されます。配列が指定されたサイズに達するまで、指定された値で配列を埋めます。このメソッドは、
array_pad
PHP 関数と同様に動作します。左側を埋めるには、負の値を使用する必要があります。指定されたサイズの絶対値が配列の長さ以下の場合、パディングは行われません:
partition$collection->nth(4, 1); // ['b', 'f']
メソッドを PHP 関数の
list
と組み合わせて使用すると、指定された条件に合格する要素を分離し、そうでないもの:$collection = collect(['product_id' => 1, 'name' => 'Desk', 'price' => 100, 'discount' => false]); $filtered = $collection->only(['product_id', 'name']); $filtered->all(); // ['product_id' => 1, 'name' => 'Desk']
pipeメソッドは、コレクションが指定されたコールバック関数に渡され、結果が返されます:$collection = collect(['A', 'B', 'C']); $filtered = $collection->pad(5, 0); $filtered->all(); // ['A', 'B', 'C', 0, 0] $filtered = $collection->pad(-5, 0); $filtered->all(); // [0, 0, 'A', 'B', 'C']
#pluck() pluckこのメソッドは、コレクション内の指定されたキーに対応するすべての値を取得できます:$collection = collect([1, 2, 3, 4, 5, 6]); list($underThree, $equalOrAboveThree) = $collection->partition(function ($i) { return $i < 3; }); $underThree->all(); // [1, 2] $equalOrAboveThree->all(); // [3, 4, 5, 6]
キーを指定してコレクションを生成することもできます2 番目のパラメータを渡すことによって:
重複するキーがある場合、最後に一致した要素がポップされたコレクションに挿入されます:$collection = collect([1, 2, 3]); $piped = $collection->pipe(function ($collection) { return $collection->sum(); }); // 6
$collection = collect([ ['product_id' => 'prod-100', 'name' => 'Desk'], ['product_id' => 'prod-200', 'name' => 'Chair'], ]); $plucked = $collection->pluck('name'); $plucked->all(); // ['Desk', 'Chair']
##
pop()
pop
メソッドは、コレクションから最後のコレクション項目を削除して返します:$plucked = $collection->pluck('name', 'product_id'); $plucked->all(); // ['prod-100' => 'Desk', 'prod-200' => 'Chair']
##prepend()
prepend
メソッドは、指定された値をコレクションの先頭に追加します:
$collection = collect([ ['brand' => 'Tesla', 'color' => 'red'], ['brand' => 'Pagani', 'color' => 'white'], ['brand' => 'Tesla', 'color' => 'black'], ['brand' => 'Pagani', 'color' => 'orange'], ]); $plucked = $collection->pluck('color', 'brand'); $plucked->all(); // ['Tesla' => 'black', 'Pagani' => 'orange']
2 番目のパラメータを渡して、新しく追加されたコレクション項目のキーを設定することもできます:$collection = collect([1, 2, 3, 4, 5]); $collection->pop(); // 5 $collection->all(); // [1, 2, 3, 4]
pull ( )
pull
メソッドは、指定されたキーに対応する値をコレクションから削除し、次を返します:
$collection = collect([1, 2, 3, 4, 5]); $collection->prepend(0); $collection->all(); // [0, 1, 2, 3, 4, 5]
##push()
pushメソッドは、指定された値をコレクション項目の末尾に追加します:
put()$collection = collect(['one' => 1, 'two' => 2]); $collection->prepend(0, 'zero'); $collection->all(); // ['zero' => 0, 'one' => 1, 'two' => 2]
putメソッドは、指定されたキーと値のペアをコレクション:
random()$collection = collect(['product_id' => 'prod-100', 'name' => 'Desk']); $collection->pull('name'); // 'Desk' $collection->all(); // ['product_id' => 'prod-100']
#randomからのメソッドcollection ランダムな項目を返します:
random
取得するランダムな項目の数を指定するために、整数を$collection = collect([1, 2, 3, 4]); $collection->push(5); $collection->all(); // [1, 2, 3, 4, 5]
に渡すことを選択できます。受け取りたい数量を明示的に渡す限り、アイテムのコレクションが返されます。
InvalidArgumentException## をスローします。 #。
コレクションに含まれるアイテムの数が指定された数より少ない場合、このメソッドは$collection = collect(['product_id' => 1, 'name' => 'Desk']); $collection->put('price', 100); $collection->all(); // ['product_id' => 1, 'name' => 'Desk', 'price' => 100]
#reduce()reduce
メソッドの結果セットが 1 つの値に減らされるまで、反復の値は次の反復に渡されます。$collection = collect([1, 2, 3, 4, 5]); $collection->random(); // 4 - (retrieved randomly)
最初の反復の
null$carry
の値はです。ただし、2 番目の引数を
reject()reduce
に渡すことで初期値を指定することもできます:$random = $collection->random(3); $random->all(); // [2, 4, 5] - (retrieved randomly)
truereject
メソッドは、指定されたコールバック関数を使用してコレクションをフィルターします。コールバック関数がを返した場合、対応するコレクション項目がコレクションから削除されます。
メソッドと$collection = collect([1, 2, 3]); $total = $collection->reduce(function ($carry, $item) { return $carry + $item; }); // 6
reject
メソッドはreverseメソッドは次の目的で使用されます。元のキーを保持した、コレクション項目の順序を逆にします:$collection->reduce(function ($carry, $item) { return $carry + $item;}, 4); // 10
search()
search
メソッドは、コレクション内で指定された値を検索し、そのキーを返します。見つからない場合は、false
が返されます。$collection = collect([1, 2, 3, 4]); $filtered = $collection->reject(function ($value, $key) { return $value > 2; }); $filtered->all(); // [1, 2]
検索には「緩和された」アプローチを使用します。つまり、整数値を持つ文字列は同じ値の整数と等しいと見なされます。 「厳密な」方法で検索するには、メソッドの 2 番目のパラメータとして
true
を渡します。$collection = collect(['a', 'b', 'c', 'd', 'e']); $reversed = $collection->reverse(); $reversed->all(); /* [ 4 => 'e', 3 => 'd', 2 => 'c', 1 => 'b', 0 => 'a', ] */
あるいは、コールバック関数を渡して、条件を渡す最初の文字列を検索することもできます。 test.コレクション アイテム:
$collection = collect([2, 4, 6, 8]); $collection->search(4); // 1
shift()
shift
メソッドは、コレクションの最初のコレクション項目を削除して返します:$collection->search('4', true); // false
##shuffle()
shuffle
メソッドはコレクション項目をランダムにシャッフルします:
$collection->search(function ($item, $key) { return $item > 5; }); // 2
#slice()このメソッドは、指定されたインデックスから始まるコレクションの一部を返します。
返されるコンテンツのサイズを制限したい場合は、期待するサイズ 2 番目の引数としてこのメソッドに渡されます:$collection = collect([1, 2, 3, 4, 5]); $collection->shift(); // 1 $collection->all(); // [2, 3, 4, 5]
$collection = collect([1, 2, 3, 4, 5]); $shuffled = $collection->shuffle(); $shuffled->all(); // [3, 2, 5, 1, 4] - (generated randomly)
デフォルトでは、返されたコンテンツは元のキーを保持します。元のキーを保持したくない場合は、
values
メソッドを使用してインデックスを再作成できます。
一部()
が含まれます#sort()sort
メソッドはコレクションを並べ替えます選別。並べ替えられたコレクションには元の配列のキーが保持されるため、この例ではvalues
メソッドを使用してキーを連続番号のインデックスにリセットします。より高度な並べ替えが必要な場合は、独自のアルゴリズムを使用してコールバック関数を sort
に渡すことができます。
uasortについては、PHP ドキュメントを参照してください。これは、コレクションの
およびsort
メソッドが内部で呼び出すものです。{ヒント} ネストされた配列またはオブジェクトを並べ替える必要がある場合は、
sortBy
sortByDesc #を参照してください。 ## 方法。
#
sortBy()
sortBy
メソッドは、指定されたキーに基づいてコレクションを並べ替えます。並べ替えられたコレクションには元の配列のキーが保持されるため、この例ではvalues
メソッドを使用してキーを連続番号のインデックスにリセットします。独自のコールバック関数を渡して、コレクションの値を並べ替える方法を決定することもできます:$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); $slice = $collection->slice(4); $slice->all(); // [5, 6, 7, 8, 9, 10]
sortByDesc()このメソッドは
sortBy
メソッドと同じですが、コレクションを逆順に並べ替えます。
#sortKeys()
メソッドは、基になるassociation コレクションを並べ替える配列キー:sortKeys
$slice = $collection->slice(4, 2); $slice->all(); // [5, 6]
##sortKeysDesc()
メソッド
sortKeys
メソッドと同じですが、コレクションを逆の順序で並べ替えます。
splice
2 番目のパラメーターを渡して、削除されるコンテンツのサイズを制限できます:メソッドは削除と戻り値を返します指定されたインデックスで始まるコレクション項目フラグメント:
$collection = collect([5, 3, 1, 2, 4]); $sorted = $collection->sort(); $sorted->values()->all(); // [1, 2, 3, 4, 5]
$collection = collect([ ['name' => 'Desk', 'price' => 200], ['name' => 'Chair', 'price' => 100], ['name' => 'Bookcase', 'price' => 150], ]); $sorted = $collection->sortBy('price');$sorted->values()->all(); /* [ ['name' => 'Chair', 'price' => 100], ['name' => 'Bookcase', 'price' => 150], ['name' => 'Desk', 'price' => 200], ] */
さらに、新しいパラメーター項目を渡すこともできます3 番目のパラメーターは、コレクション内の削除されたコレクション項目を置き換えるのに使用されます:
$collection = collect([ ['name' => 'Desk', 'colors' => ['Black', 'Mahogany']], ['name' => 'Chair', 'colors' => ['Black']], ['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']], ]); $sorted = $collection->sortBy(function ($product, $key) { return count($product['colors']); }); $sorted->values()->all(); /* [ ['name' => 'Chair', 'colors' => ['Black']], ['name' => 'Desk', 'colors' => ['Black', 'Mahogany']], ['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']], ] */
splitメソッドは、指定された値に従ってコレクションを分割します:
$collection = collect([ 'id' => 22345, 'first' => 'John', 'last' => 'Doe', ]); $sorted = $collection->sortKeys();$sorted->all(); /* [ 'first' => 'John', 'id' => 22345, 'last' => 'Doe', ] */
sumこのメソッドは、コレクション内のすべての項目の合計を返します。
または、独自のコールバック関数を渡して、コレクション内のどの値を合計するかを決定することもできます:$collection = collect([1, 2, 3, 4, 5]); $chunk = $collection->splice(2); $chunk->all(); // [3, 4, 5] $collection->all(); // [1, 2]
コレクションにネストされた配列またはオブジェクトが含まれる場合は、キーを渡す必要があります。 in 合計する値を指定します:
$collection = collect([1, 2, 3, 4, 5]); $chunk = $collection->splice(2, 1); $chunk->all(); // [3] $collection->all(); // [1, 2, 4, 5]
$collection = collect([1, 2, 3, 4, 5]); $chunk = $collection->splice(2, 1, [10, 11]); $chunk->all(); // [3] $collection->all(); // [1, 2, 10, 11, 4, 5]
##take()take
メソッドは、指定された数の項目を含む新しいコレクションを返します。$collection = collect([1, 2, 3, 4, 5]); $groups = $collection->split(3); $groups->toArray(); // [[1, 2], [3, 4], [5]]
負の整数を渡して、コレクションの最後から指定した数の項目を取得することもできます:
collect([1, 2, 3, 4, 5])->sum(); // 15
##tap()
メソッドは、指定されたコールバック関数をコレクションに渡します。これにより、特定の時点でコレクションを「タップ」し、そのコレクションに対して操作を実行できるようになります。コレクション自体に影響を与えることなく、コレクション アイテムを削除します。特定の操作:$collection = collect([ ['name' => 'JavaScript: The Good Parts', 'pages' => 176], ['name' => 'JavaScript: The Definitive Guide', 'pages' => 1096], ]); $collection->sum('pages'); // 1272
times()
static
times
メソッドは、コールバック関数を指定された回数呼び出すことによって新しいコレクションを作成します:$collection = collect([ ['name' => 'Chair', 'colors' => ['Black']], ['name' => 'Desk', 'colors' => ['Black', 'Mahogany']], ['name' => 'Bookcase', 'colors' => ['Red', 'Beige', 'Brown']], ]); $collection->sum(function ($product) { return count($product['colors']); }); // 6
Useこのメソッドは、ファクトリと組み合わせて使用して Eloquent モデルを作成できます:
$collection = collect([0, 1, 2, 3, 4, 5]); $chunk = $collection->take(3); $chunk->all(); // [0, 1, 2]
#toArray()
toArray
メソッドは、コレクションを PHP
arrayに変換します。コレクションの値が Eloquent モデルの場合、それも配列に変換されます。
$collection = collect([0, 1, 2, 3, 4, 5]); $chunk = $collection->take(-2); $chunk->all(); // [4, 5]
{note}
toJson()toArray
は、すべてのコレクションのネストされたオブジェクトも配列に変換します。元の配列を取得したい場合は、
allメソッドを使用できます。
toJsonメソッド Convertコレクションを JSON 文字列に変換します:
##transform()collect([2, 4, 3, 1, 5]) ->sort() ->tap(function ($collection) { Log::debug('Values after sorting', $collection->values()->toArray()); }) ->shift(); // 1
transform
メソッドはコレクションを反復処理し、コレクション項目ごとに指定されたコールバック関数を呼び出します。コレクションの内容もコールバック関数の戻り値によって置き換えられます。$collection = Collection::times(10, function ($number) { return $number * 9; }); $collection->all(); // [9, 18, 27, 36, 45, 54, 63, 72, 81, 90]
はコレクション自体を変更します。新しいコレクションを作成する場合は、{note} ほとんどのコレクション メソッドとは異なり、
transformunion
メソッドの追加指定された配列をコレクションに追加します。指定された配列に元のコレクションと同じキーが含まれている場合、元のコレクションの値は変更されません:
$categories = Collection::times(3, function ($number) { return factory(Category::class)->create(['name' => "Category No. $number"]); }); $categories->all(); /* [ ['id' => 1, 'name' => 'Category #1'], ['id' => 2, 'name' => 'Category #2'], ['id' => 3, 'name' => 'Category #3'], ] */
unique
valuesメソッドは、コレクション内のすべての一意のアイテムを返します。返されたコレクションには元の配列のキーが保持されているため、この例では
メソッドを使用してキーを連続番号のインデックスにリセットします。ネストされた配列またはオブジェクトを操作する場合、一意性を判断するために使用するキーを指定できます:
$collection = collect(['name' => 'Desk', 'price' => 200]); $collection->toArray(); /* [ ['name' => 'Desk', 'price' => 200], ] */
独自のコールバック関数を渡すことによって項目の一意性を判断することもできます:
unique メソッドは、項目値をチェックするときに「リラックス」モードの比較を使用します。これは、整数値を持つ文字列が同じ値に等しい整数として扱われることを意味します。 uniqueStrict メソッドを使用して、「厳密」モードの比較を行うことができます。 #uniqueStrict()$collection = collect(['name' => 'Desk', 'price' => 200]); $collection->toJson(); // '{"name":"Desk", "price":200}'
unique と同じです方法は同じですが、すべての値は「strict」モードを使用して比較されます。
#whereNotIn()unless()
unless
渡された最初のパラメータがtrue
でない場合、指定されたメソッドが実行されます。 コールバック関数:$collection = collect([1, 2, 3, 4, 5]); $collection->transform(function ($item, $key) { return $item * 2; }); $collection->all(); // [2, 4, 6, 8, 10]
と
unless
は、when
メソッドに対応します。#空でない場合()
##空でない場合()
#メソッドの別名。空の場合
staticunwrapメソッドはコレクションを返します内部で使用可能な値:
$collection = collect([1 => ['a'], 2 => ['b']]); $union = $collection->union([3 => ['c'], 1 => ['b']]); $union->all(); // [1 => ['a'], 2 => ['b'], 3 => ['c']]
valuesメソッドは、連続した番号にリセットされたキーを持つ新しいコレクションを返します:$collection = collect([1, 1, 2, 2, 3, 4, 2]); $unique = $collection->unique(); $unique->values()->all(); // [1, 2, 3, 4]
whenメソッド 渡された最初のパラメーターがtrue
およびの場合、指定されたコールバック関数が実行されます:
$collection = collect([ ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'], ['name' => 'iPhone 5', 'brand' => 'Apple', 'type' => 'phone'], ['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'], ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'], ['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'], ]); $unique = $collection->unique('brand'); $unique->values()->all(); /* [ ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'], ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'], ] */
when
メソッドに対応します。は、
unless
whenEmptyメソッド (コレクション時) is 空の場合、指定されたコールバック関数が実行されます。
は、$unique = $collection->unique(function ($item) { return $item['brand'].$item['type']; }); $unique->values()->all(); /* [ ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'], ['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'], ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'], ['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'], ] */
と
whenEmpty
メソッドに対応します。 whenNotEmpty()whenNotEmptywhenNotEmpty
コレクションが次の場合のメソッドnot 空の場合、指定されたコールバック関数が実行されます。$collection = collect([1, 2, 3]); $collection->unless(true, function ($collection) { return $collection->push(4); }); $collection->unless(false, function ($collection) { return $collection->push(5); }); $collection->all(); // [1, 2, 3, 5]
と
whenNotEmpty
は、whenEmpty
メソッドは指定されたキー/値ペアのフィルター コレクション:メソッドに対応します。
Collection::unwrap(collect('John Doe')); // ['John Doe']Collection::unwrap(['John Doe']); // ['John Doe']Collection::unwrap('John Doe'); // 'John Doe'
where
whereStrictメソッドは、コレクション項目の値をチェックするときに「リラックス」モードの比較を使用します。これは、整数値を持つ文字列が同じ整数と等しいとみなされることを意味します。価値。
メソッドを使用して、「厳密」モードの比較を実行できます。
この方法は似ていますが、異なる点は、「厳密」モードの比較が使用されることです。whereBetween()
whereBetween
このメソッドは、指定された範囲を使用してコレクションをフィルターします:$collection = collect([ 10 => ['product' => 'Desk', 'price' => 200], 11 => ['product' => 'Desk', 'price' => 200] ]); $values = $collection->values();$values->all(); /* [ 0 => ['product' => 'Desk', 'price' => 200], 1 => ['product' => 'Desk', 'price' => 200], ] */
whereIn()
whereIn
は、指定された配列を含むキーと値のペアに基づいてコレクションをフィルターします。$collection = collect([1, 2, 3]); $collection->when(true, function ($collection) { return $collection->push(4); }); $collection->when(false, function ($collection) { return $collection->push(5); }); $collection->all(); // [1, 2, 3, 4]
#whereInStrict()whereIn
メソッドは、「緩和された」比較を使用してコレクション項目の値をチェックします。これは、整数値を持つ文字列が同じ値に等しい整数として扱われることを意味します。whereInStrict
メソッドを使用して、「厳密」モードの比較を実行できます。このメソッドは
whereIn と同じです
方法は似ていますが、比較に「strict」モードが使用される点が異なります。
whereInstanceOf()
指定されたメソッドに基づくコレクションをフィルターするクラス:whereInstanceOf
$collection = collect(['michael', 'tom']); $collection->whenEmpty(function ($collection) { return $collection->push('adam'); }); $collection->all(); // ['michael', 'tom'] $collection = collect();$collection->whenEmpty(function ($collection) { return $collection->push('adam'); }); $collection->all(); // ['adam'] $collection = collect(['michael', 'tom']); $collection->whenEmpty(function($collection) { return $collection->push('adam');}, function($collection) { return $collection->push('taylor'); }); $collection->all(); // ['michael', 'tom', 'taylor']
whereNotBetween()
指定された範囲内でコレクションをフィルタリングするメソッド:whereNotBetween
$collection = collect(['michael', 'tom']); $collection->whenNotEmpty(function ($collection) { return $collection->push('adam'); }); $collection->all(); // ['michael', 'tom', 'adam'] $collection = collect(); $collection->whenNotEmpty(function ($collection) { return $collection->push('adam'); }); $collection->all(); // [] $collection = collect(); $collection->whenNotEmpty(function($collection) { return $collection->push('adam'); }, function($collection) { return $collection->push('taylor'); }); $collection->all(); // ['taylor']
whereNotIn
このメソッドは、指定されたキーと、指定された配列を含まない値に基づいてコレクションをフィルターします。$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 100], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->where('price', 100);$filtered->all(); /* [ ['product' => 'Chair', 'price' => 100], ['product' => 'Door', 'price' => 100], ] */
whereNotIn
メソッドは「relaxed」を使用します。チェックするモード比較 コレクション項目の値。整数値を持つ文字列が同じ値に等しい整数として扱われることを意味します。whereNotInStrict
このメソッドはメソッドを使用して、「厳密」モードの比較を行うことができます。
メソッドは似ていますが、比較に「strict」モードが使用される点が異なります。 staticと同じですwhereNotIn
wrap
メソッド (必要に応じて)次の場合、指定された値をコレクションに入れます:
$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 80], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Pencil', 'price' => 30], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->whereBetween('price', [100, 200]); $filtered->all(); /* [ ['product' => 'Desk', 'price' => 200], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Door', 'price' => 100], ] */
zipメソッドは、指定された配列の値を、対応するインデックスにある元のコレクションの値とマージします:
$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 100], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->whereIn('price', [150, 200]); $filtered->all(); /* [ ['product' => 'Bookcase', 'price' => 150], ['product' => 'Desk', 'price' => 200], ] */
# #
高レベル メッセージング
コレクションは、一般的な操作のショートカットのコレクションである「高レベル メッセージング」のサポートも提供します。高次のメッセージングをサポートする収集メソッドは次のとおりです:
average
、avg
、contains
、それぞれの
、すべての
、フィルター
、first
、フラットマップ
、groupBy
、keyBy
、マップ
、max
、min
、パーティション
、拒否
、some
、sortBy
、sortByDesc
、sum
、およびunique
。各高次メッセージ受け渡しには、コレクション インスタンスの動的プロパティとしてアクセスできます。たとえば、
each
高次メッセージングを使用して、コレクション内の各オブジェクトのメソッドを呼び出します。$collection = collect([ new User, new User, new Post, ]); return $collection->whereInstanceOf(User::class);
同様に、
sum
高次メッセージングを使用して、次のことができます。ユーザー コレクション内の「投票」の合計数を収集します。$collection = collect([ ['product' => 'Desk', 'price' => 200], ['product' => 'Chair', 'price' => 80], ['product' => 'Bookcase', 'price' => 150], ['product' => 'Pencil', 'price' => 30], ['product' => 'Door', 'price' => 100], ]); $filtered = $collection->whereNotBetween('price', [100, 200]); $filtered->all(); /* [ ['product' => 'Chair', 'price' => 80], ['product' => 'Pencil', 'price' => 30], ] */