概要
コレクションは配列と同じように要素の集合体だが、細やかな操作・集計などのメソッドを備えている。
コレクションの作成~collect()ヘルパー
collect()ヘルパーの引数に配列を入れて、Collectionのインスタンスを得られる。
|
1 2 3 4 5 6 7 8 |
>>> $c = collect([1, 2, 3]) => Illuminate\Support\Collection {#4318 all: [ 1, 2, 3, ], } |
与えるのは連想配列でもよい。
|
1 2 3 4 5 6 7 8 |
>>> $b = collect(['one' => 1, 'two' => 2, 'three' => 3]) => Illuminate\Support\Collection {#4321 all: [ "one" => 1, "two" => 2, "three" => 3, ], } |
値の参照
ブラケット([])による参照
以下のような連想配列を準備する。
|
1 2 3 4 5 6 7 8 |
>>> $c => Illuminate\Support\Collection {#4318 all: [ 0 => 1, "two" => 2, 1 => 3, ], } |
配列のインデックスや連想配列のキーを指定するのと同じようにして、ブラケット([])で要素を参照できる。
|
1 2 3 4 |
>>> $c[0] => 1 >>> $c['two'] => 2 |
get()メソッドによる参照
ブラケットの代わりにget()メソッドを用いても要素を参照できる。
|
1 2 3 4 |
>>> $c->get(0) => 1 >>> $c->get('two') => 2 |
random()~ランダムに1つ取り出す
random()メソッドを呼び出すたびに、コレクションの要素がランダムに1つ返される。
|
1 2 3 4 |
>>> $c->random() => 2 >>> $c->random() => 1 |
first()/last()
first()メソッド/last()メソッドは、コレクションの先頭要素/末尾要素を返す。
|
1 2 3 4 5 |
>>> $c->first() => 1 >>> $c->last() => 3 > |
値のセット
ブラケット([])によるセット
配列や連想配列と同じように、インデックスやキーを指定して値をセットできる。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> $c[0] = 'first' => "first" >>> $c['two'] = 'second' => "second" >>> $c => Illuminate\Support\Collection {#4318 all: [ 0 => "first", "two" => "second", 1 => 3, ], } |
put()メソッドによるセット
put(index/key, value)でも指定したインデックス/キーの要素の値をセットできる。
|
1 2 3 4 5 6 7 8 |
>>> $c->put(1, 'third') => Illuminate\Support\Collection {#4330 all: [ 0 => "first", "two" => "second", 1 => "third", ], } |
空のコレクションと要素の追加
空のコレクションの生成
collect()メソッドの引数を省略すると、空のCollectionインスタンスが生成される。
|
1 2 3 4 |
>>> $c = collect() => Illuminate\Support\Collection {#4312 all: [], } |
ブラケット([])による追加
存在しないインデックスやキーを指定して値をセットすると、新たに要素が追加される。
|
1 2 3 4 5 6 7 8 9 10 11 |
>>> $c[0] = 1 => 1 >>> $c['two'] = 2 => 2 >>> $c => Illuminate\Support\Collection {#4312 all: [ 0 => 1, "two" => 2, ], } |
ブラケットでキーを指定しないと、末尾にデータが追加される。
|
1 2 3 4 5 6 7 8 9 10 |
>>> $c[] = 3 => 3 >>> $c => Illuminate\Support\Collection {#4312 all: [ 0 => 1, "two" => 2, 1 => 3, ], } |
put()メソッドによる追加
put(index/key, value)でも要素を追加できる。
|
1 2 3 4 5 6 7 8 |
>>> $c->put('three', 3) => Illuminate\Support\Collection {#4312 all: [ 0 => 1, "two" => 2, "three" => 3, ], } |
値の引き抜き
pull()メソッドは、指定したインデックス/キーの要素をコレクションから抜き取る。その要素はコレクションから削除され、戻り値として返される。
以下の例では、pull()メソッドで2つの要素を抜き取っている。
|
1 2 3 4 5 6 7 8 9 10 |
>>> $c->pull(0) => "first" >>> $c->pull('two') => "second" >>> $c => Illuminate\Support\Collection {#4316 all: [ 1 => 3, ], } |
スタック
Collectionにはpush()メソッドとpop()メソッドが準備されていて、コレクションをスタックのように扱える。以下のデータで確認する。
|
1 2 3 4 5 6 7 8 |
>>> $c = collect([1, 2, 3]) => Illuminate\Support\Collection {#4329 all: [ 1, 2, 3, ], } |
push()メソッド
push()メソッドは、引数で指定した値をコレクションの末尾に追加する。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
>>> $c->push(4) => Illuminate\Support\Collection {#4329 all: [ 1, 2, 3, 4, ], } >>> $c->push('five') => Illuminate\Support\Collection {#4329 all: [ 1, 2, 3, 4, "five", ], } |
2つ以上の引数を指定してもエラーにはならないが、1つ目の引数の値のみが使われてプッシュされる。
pop()メソッド
pop()メソッドは、コレクションの末尾から要素を抜き取り、戻り値として返す。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> $c->pop() => "five" >>> $c->pop() => 4 >>> $c => Illuminate\Support\Collection {#4329 all: [ 1, 2, 3, ], } |
空かどうかの確認
isEmpty()/isNotEmpty()は、コレクションが空か/空でないかを確認して結果をtrue/falseで返す。
|
1 2 3 4 |
>>> $c->isEmpty() => false >>> $c->isNotEmpty() => true |
nullの場合はCollectionのインスタンスではないので、これらのメソッドの結果はエラーになる。
コレクションから配列への変換
toArray()メソッドは、コレクションの内容を配列として返す。toArray()のほかall()メソッドでも同じ結果が得られる。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
>>> $c = collect([1, 'two' => 2, 'three']) => Illuminate\Support\Collection {#4318 all: [ 0 => 1, "two" => 2, 1 => "three", ], } >>> $c->toArray() => [ 0 => 1, "two" => 2, 1 => "three", ] |