概要
コレクションは配列と同じように要素の集合体だが、細やかな操作・集計などのメソッドを備えている。
コレクションの作成~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", ] |