集める


コレクションの作成

    コレクションの拡張
  • はじめに

    Illuminate\Support\Collection クラスは、配列データのカプセル化をより読みやすく、より簡単に処理できるようにします。具体的な例については、以下のコードを参照してください。 collect 補助関数を使用して配列から新しいコレクション インスタンスを作成し、各要素に対して strtoupper 関数を実行してから、空の要素をすべて削除します。ご覧のとおり、

    Collection

    クラスを使用すると、他のメソッドへの呼び出しを連鎖させて、基になる配列に対するスムーズなマップと操作の削減を実現できます。一般に、コレクションは不変です。つまり、各 Collectionすべてのメソッドは新しい Collection インスタンスを返します。

    コレクションの作成

    前述のように、

    collect

    ヘルパー関数は指定された配列のコレクション 新しい Illuminate\Support\Collection インスタンスを返します。したがって、次のようなコレクションを簡単に作成できます:

    $collection = collect(['taylor', 'abigail', null])->map(function ($name) { 
       return strtoupper($name);
    })->reject(function ($name) { 
       return empty($name);
    });

    {tip} 通常、Eloquent クエリによって返される結果は
    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()

    avg

    メソッドは指定された値を返します。 平均 キー:

    collect([1, 2, 3])->all();// [1, 2, 3]

    ##chunk()

    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

    combine()

    ##combine メソッドは、セットの値をキーとして使用し、別の配列の値を結合するか、値としてセットを組み合わせることができます。セットを形成します:

    $collection = collect([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
    $collapsed = $collection->collapse();
    $collapsed->all();
    // [1, 2, 3, 4, 5, 6, 7, 8, 9]

    concat()

    concat メソッドは、指定された array またはコレクション値をコレクションの末尾に追加します:

    $collection = collect(['name', 'age']);
    $combined = $collection->combine(['George', 29]);
    $combined->all();
    // ['name' => 'George', 'age' => 29]

    ## 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

    contains

    メソッドは、コレクション項目の値をチェックするときに「緩和された」比較を使用します。つまり、整数値を持つ文字列は次のようになります。同じ値に等しい整数として扱われます。対照的に、containsStrict メソッドは、フィルターに「厳密な」比較を使用します。

    containsStrict()

    このメソッドは

    と同じですcontains

    メソッドは似ていますが、「厳密な」比較を使用してすべての値を比較します。

    count()

    count メソッドはこのコレクションを返します。コレクション内のアイテムの総数:

    $collection = collect([1, 2, 3, 4, 5]);
    $collection->contains(function ($value, $key) {
        return $value > 5;
      });
    // false

    crossJoin()

    CrossJoin メソッドは、指定された配列またはコレクションの値を相互結合し、考えられるすべての順列のデカルト積を返します:
    $collection = collect([1, 2, 3, 4]);
    $collection->count();
    // 4

    # #dd()

    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()

    diff
    メソッドはコレクションを結合します他のコレクションまたは純粋な PHP

    Arrays と値の比較を実行します。次に、元のコレクションには存在するが、指定されたコレクションには存在しない値を返します。
    $collection = collect(['John Doe', 'Jane Doe']);
    $collection->dd();
    /*
        Collection {
            #items: array:2 [
                0 => "John Doe"
                1 => "Jane Doe"
            ]
        }
    */

    ##diffAssoc( )

    diffAssoc
    メソッドは、キーと値に基づいて別のコレクションまたは PHP
    array

    と比較します。このメソッドは、元のコレクションが指定されたコレクションに存在しないキーと値のペアを返します:
    $collection = collect([1, 2, 3, 4, 5]);
    $diff = $collection->diff([2, 4, 6, 8]);
    $diff->all();
    // [1, 3, 5]

    diffKeys()

    diffKeys メソッドは、別のコレクションまたは PHP array のキーを比較し、そこに存在するキーを返します。元のコレクション キーに対応するキー/値のペアが指定されたコレクションに存在しません:

    $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()

    eachSpread メソッドは、コレクション項目をループするために使用されます。ネストされた各コレクション項目はコールバック関数に渡されます:

    $collection->each(function ($item, $key) {
        if (/* 某些条件 */ ) 
      { 
             return false;   
        
        }
     });

    コールバック関数で false を返すことでループを終了できます:

    $collection = collect([['John Doe', 35], ['Jane Doe', 33]]);
    $collection->eachSpread(function ($name, $age) {
        //
     });

    #every()

    every メソッドを使用して、コレクション内の各要素が指定された条件に合格するかどうかを確認できます。テスト:
    $collection->eachSpread(function ($name, $age) {
        return false;
    });

    コレクションが空の場合、

    every は true を返します:

    collect([1, 2, 3, 4])->every(function ($value, $key) {
        return $value > 2;
     });
    // false

    ##Except()

    Except

    メソッドは、指定されたキーを除くコレクション内のすべてのコレクション項目を返します:
    $collection = collect([]);
    $collection->every(function($value, $key)
     {
       return $value > 2;
     });
    // true
    および

    excel

    only メソッドに対応します。

    #filter()

    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]

    パラメーターを渡さずに first メソッドを呼び出して、コレクション内の最初の要素を取得することもできます。コレクションが空の場合、

    null

    が返されます:

    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} ほとんどのコレクション メソッドとは異なり、forget

    新しい変更されたコレクションは返されません。元のコレクションを直接変更します。

    forPage()

    forPage メソッド指定されたページ番号のコレクション項目を含む新しいコレクション。このメソッドは、最初の引数としてページ番号を受け入れ、2 番目の引数としてページごとに表示されるアイテムの数を受け入れます:
    $collection = collect(['name' => 'taylor', 'framework' => 'laravel']);
    $collection->forget('name');$collection->all();
    // ['framework' => 'laravel']

    get()

    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

    メソッドは、コレクション項目をマージするために使用されます。そのパラメータはコレクション項目のタイプによって異なります。コレクションに配列またはオブジェクトが含まれている場合は、結合したいプロパティのキーと、それらを「結合」するために値の間に入れたい文字列を渡す必要があります:

    $collection = collect(['account_id' => 1, 'product' => 'Desk', 'amount' => 5]);
    $collection->has('product');
    // true
    $collection->has(['product', 'amount']);
    // true
    $collection->has(['amount', 'price']);
    // false
    If the collection contains単純な文字列または数値。このメソッドの唯一のパラメータとして「スプライシング」に使用される文字列を渡すだけです:

    $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()

    コレクションが空の場合、isEmpty メソッドは

    true

    を返し、それ以外の場合は戻ります。 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()

    コレクションの場合が空でない場合、

    isNotEmpty メソッドは true

    を返し、それ以外の場合は

    false を返します:

    collect([])->isEmpty();
    // true

    ##keyBy()

    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()

    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()

    last このメソッドは、指定された条件テストに合格したコレクション内の最後の要素を返します。また、渡さないでください。 入力パラメータを指定して

    last

    メソッドを呼び出し、コレクション内の最後の要素を取得します。コレクションが空の場合は、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()

    staticmacro

    メソッドを使用すると、実行時に

    Collection クラスにメソッドを追加できます。詳細については、Extended Collections のドキュメントを参照してください。

    make()

    staticmake メソッドで A を作成できます新しいコレクションインスタンス。

    「コレクションの作成

    」セクションを参照してください。

    #map()

    map メソッドはコレクションを走査しますおよびマージ 各値を指定されたコールバック関数に渡します。このコールバック関数はコレクション項目を任意に変更して返すことができ、それによって変更されたコレクション項目の新しいコレクションを生成します:
    collect([1, 2, 3, 4])->last(function ($value, $key) {
        return $value < 3;
      });
    // 2

    {note} 他のほとんどのコレクション メソッドと同様に、mapコレクション インスタンスが返されますが、元のコレクションは変更されません。元のコレクションを変更する場合は、

    transform

    メソッドを使用してください。

    mapInto()

    mapInto()

    コレクションを反復処理し、コンストラクターに値を渡すことで指定されたクラスの新しいインスタンスを作成するメソッド:
    collect([1, 2, 3, 4])->last();
    // 4

    mapSpread()

    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()

    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()

    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()

    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()

    nth

    メソッドは、n 番目ごとの要素で構成される新しいコレクションを作成します:

    $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']

    only は、

    excel

    メソッドに対応します。 。

    ##pad()

    pad

    メソッドは次の目的で使用されます。配列が指定されたサイズに達するまで、指定された値で配列を埋めます。このメソッドは、array_pad PHP 関数と同様に動作します。

    左側を埋めるには、負の値を使用する必要があります。指定されたサイズの絶対値が配列の長さ以下の場合、パディングは行われません:

    $collection->nth(4, 1);
    // ['b', 'f']

    partition( )

    partition

    メソッドを 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()

    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

    メソッドは、指定された値をコレクション項目の末尾に追加します:

    $collection = collect(['one' => 1, 'two' => 2]);
    $collection->prepend(0, 'zero');
    $collection->all();
    // ['zero' => 0, 'one' => 1, 'two' => 2]

    put()

    put

    メソッドは、指定されたキーと値のペアをコレクション:

    $collection = collect(['product_id' => 'prod-100', 'name' => 'Desk']);
    $collection->pull('name');
    // 'Desk'
    $collection->all();
    // ['product_id' => 'prod-100']

    random()

    #random

    からのメソッドcollection ランダムな項目を返します:

    $collection = collect([1, 2, 3, 4]);
    $collection->push(5);
    $collection->all();
    // [1, 2, 3, 4, 5]
    取得するランダムな項目の数を指定するために、整数を

    random

    に渡すことを選択できます。受け取りたい数量を明示的に渡す限り、アイテムのコレクションが返されます。

    $collection = collect(['product_id' => 1, 'name' => 'Desk']);
    $collection->put('price', 100);
    $collection->all();
    // ['product_id' => 1, 'name' => 'Desk', 'price' => 100]
    コレクションに含まれるアイテムの数が指定された数より少ない場合、このメソッドは

    InvalidArgumentException## をスローします。 #。

    #reduce()

    reduce メソッドの結果セットが 1 つの値に減らされるまで、反復の値は次の反復に渡されます。

    $collection = collect([1, 2, 3, 4, 5]);
    $collection->random();
    // 4 - (retrieved randomly)

    最初の反復の $carry の値は

    null

    です。ただし、2 番目の引数を reduce に渡すことで初期値を指定することもできます:

    $random = $collection->random(3);
    $random->all();
    // [2, 4, 5] - (retrieved randomly)

    reject()

    reject メソッドは、指定されたコールバック関数を使用してコレクションをフィルターします。コールバック関数が

    true

    を返した場合、対応するコレクション項目がコレクションから削除されます。

    $collection = collect([1, 2, 3]);
    $total = $collection->reduce(function ($carry, $item) {
        return $carry + $item;
     });
     // 6
    メソッドと reject メソッドは

    filter # に対応します。 ##### 方法。

    #reverse()

    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()

    slice

    このメソッドは、指定されたインデックスから始まるコレクションの一部を返します。

    $collection = collect([1, 2, 3, 4, 5]);
    $collection->shift();
    // 1
    $collection->all();
    // [2, 3, 4, 5]
    返されるコンテンツのサイズを制限したい場合は、期待するサイズ 2 番目の引数としてこのメ​​ソッドに渡されます:

    $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()

    sortKeys

    メソッドは、基になるassociation コレクションを並べ替える配列キー:

    $slice = $collection->slice(4, 2);
    $slice->all();
    // [5, 6]

    ##sortKeysDesc()

    メソッドsortKeys

    メソッドと同じですが、コレクションを逆の順序で並べ替えます。

    #splice()

    splice メソッドは削除と戻り値を返します指定されたインデックスで始まるコレクション項目フラグメント:
    $collection = collect([5, 3, 1, 2, 4]);
    $sorted = $collection->sort();
    $sorted->values()->all();
    // [1, 2, 3, 4, 5]

    2 番目のパラメーターを渡して、削除されるコンテンツのサイズを制限できます:

    $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()

    split

    メソッドは、指定された値に従ってコレクションを分割します:
    $collection = collect([ 
       'id' => 22345,    
       'first' => 'John',    
       'last' => 'Doe',
      ]);
    $sorted = $collection->sortKeys();$sorted->all();
    /*
        [
            'first' => 'John',
            'id' => 22345,
            'last' => 'Doe',
        ]
    */

    ##sum ( )

    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()

    tap

    メソッドは、指定されたコールバック関数をコレクションに渡します。これにより、特定の時点でコレクションを「タップ」し、そのコレクションに対して操作を実行できるようになります。コレクション自体に影響を与えることなく、コレクション アイテムを削除します。特定の操作:
    $collection = collect([
        ['name' => 'JavaScript: The Good Parts', 'pages' => 176],    
        ['name' => 'JavaScript: The Definitive Guide', 'pages' => 1096],
      ]);
    $collection->sum('pages');
    // 1272

    times()

    statictimes メソッドは、コールバック関数を指定された回数呼び出すことによって新しいコレクションを作成します:

    $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}

    toArray は、すべてのコレクションのネストされたオブジェクトも配列に変換します。元の配列を取得したい場合は、all メソッドを使用できます。

    toJson()

    toJson

    メソッド Convertコレクションを JSON 文字列に変換します:

    collect([2, 4, 3, 1, 5])
        ->sort()    
        ->tap(function ($collection) { 
               Log::debug('Values after sorting', $collection->values()->toArray()); 
             })   
         ->shift();
     // 1

    ##transform()

    transform メソッドはコレクションを反復処理し、コレクション項目ごとに指定されたコールバック関数を呼び出します。コレクションの内容もコールバック関数の戻り値によって置き換えられます。

    $collection = Collection::times(10, function ($number) {
        return $number * 9;
     });
    $collection->all();
    // [9, 18, 27, 36, 45, 54, 63, 72, 81, 90]

    {note} ほとんどのコレクション メソッドとは異なり、transform

    はコレクション自体を変更します。新しいコレクションを作成する場合は、

    map メソッドを使用できます。

    union()

    union メソッドの追加指定された配列をコレクションに追加します。指定された配列に元のコレクションと同じキーが含まれている場合、元のコレクションの値は変更されません:
    $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()

    unique メソッドは、コレクション内のすべての一意のアイテムを返します。返されたコレクションには元の配列のキーが保持されているため、この例では

    values

    メソッドを使用してキーを連続番号のインデックスにリセットします。ネストされた配列またはオブジェクトを操作する場合、一意性を判断するために使用するキーを指定できます:

    $collection = collect(['name' => 'Desk', 'price' => 200]);
    $collection->toArray();
    /*
        [
            ['name' => 'Desk', 'price' => 200],
        ]
    */
    独自のコールバック関数を渡すことによって項目の一意性を判断することもできます:
    $collection = collect(['name' => 'Desk', 'price' => 200]);
    $collection->toJson();
    // '{"name":"Desk", "price":200}'
    unique

    メソッドは、項目値をチェックするときに「リラックス」モードの比較を使用します。これは、整数値を持つ文字列が同じ値に等しい整数として扱われることを意味します。

    uniqueStrict

    メソッドを使用して、「厳密」モードの比較を行うことができます。

    #uniqueStrict()

    このメソッドは

    unique と同じです

    方法は同じですが、すべての値は「strict」モードを使用して比較されます。

    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 メソッドに対応します。

    #空でない場合()

    空でない場合#メソッドの別名。

    ##空でない場合()

    空の場合

    #メソッドの別名。

    unwrap()

    static
    unwrap

    メソッドはコレクションを返します内部で使用可能な値:
    $collection = collect([1 => ['a'], 2 => ['b']]);
    $union = $collection->union([3 => ['c'], 1 => ['b']]);
    $union->all();
    // [1 => ['a'], 2 => ['b'], 3 => ['c']]

    #values()

    values
    メソッドは、連続した番号にリセットされたキーを持つ新しいコレクションを返します:

    $collection = collect([1, 1, 2, 2, 3, 4, 2]);
    $unique = $collection->unique();
    $unique->values()->all();
    // [1, 2, 3, 4]

    when()

    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()

    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

    メソッドに対応します。

    whenNotEmpty()

    whenNotEmpty
    コレクションが次の場合のメソッド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 メソッドに対応します。

    where()

    where

    メソッドは指定されたキー/値ペアのフィルター コレクション:
    Collection::unwrap(collect('John Doe'));
    // ['John Doe']Collection::unwrap(['John Doe']);
    // ['John Doe']Collection::unwrap('John Doe');
    // 'John Doe'

    where メソッドは、コレクション項目の値をチェックするときに「リラックス」モードの比較を使用します。これは、整数値を持つ文字列が同じ整数と等しいとみなされることを意味します。価値。

    whereStrict

    メソッドを使用して、「厳密」モードの比較を実行できます。

    #whereStrict()

    このメソッドは where と同じです

    この方法は似ていますが、異なる点は、「厳密」モードの比較が使用されることです。

    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]

    whereIn メソッドは、「緩和された」比較を使用してコレクション項目の値をチェックします。これは、整数値を持つ文字列が同じ値に等しい整数として扱われることを意味します。 whereInStrict メソッドを使用して、「厳密」モードの比較を実行できます。

    #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()

    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 メソッドを使用して、「厳密」モードの比較を行うことができます。

    whereNotInStrict()

    このメソッドは

    と同じですwhereNotIn

    メソッドは似ていますが、比較に「strict」モードが使用される点が異なります。

    wrap()

    static

    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()

    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],
        ]
    */

    # #

    高レベル メッセージング

    コレクションは、一般的な操作のショートカットのコレクションである「高レベル メッセージング」のサポートも提供します。高次のメッセージングをサポートする収集メソッドは次のとおりです: averageavgcontainsそれぞれのすべてのフィルター firstフラットマップgroupBykeyByマップmaxminパーティション拒否somesortBysortByDescsum、および 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],
        ]
    */
    この記事は、LearnKu.com Web サイトで最初に公開されました。