Laravel – Collection – 集計・加工

集計

コレクションの要素の個数、合計値、平均などを求めるメソッドが準備されている。これらのメソッドは、コレクションの要素に基づいた処理結果を1つの数値として返す。

クエリービルダーのメソッドでも書いたが、データベースに対するクエリーに関するメソッドというよりも、Collectionの要素を集計するメソッドととらえた方がよい。

以下の2つのコレクション$c$pで確認する。

count()~要素数

コレクションの要素の数を返す。引数を指定しても無視される。

max()/min()~最大値・最小値

コレクションの要素の最大値/最小値を返す。

連想配列を要素とする配列の場合は、キーを指定してその値の最小値/最大値を取得できる。値が文字列を含む場合、辞書順での最小値/最大値となる。

連想配列で引数を指定しないと、最初のキー列の値で判定され、その値を持つ要素が連想配列として返される。

sum()/average()/avg()~合計値・平均値

コレクションの要素の合計値/平均値を返す。

連想配列の場合は、集計するキー列を指定する。引数を指定しないとエラー、文字列を値に含むキーを指定すると警告が出て結果は0になる。

並べ替え

コレクションの要素を並べ替え、結果のコレクションを返す。元のコレクションは影響を受けない。

reverse()~逆順に並べる

reverse()メソッドは、元のコレクションの要素を逆順にしたコレクションを返す。引数を指定しても無視される。

shuffle()~シャッフル

shuffle()メソッドは、元のコレクションの要素の値をシャッフルしたコレクションを返す。

sort()~昇順ソート

sort()メソッドは元のコレクションの値の昇順で要素を並べ替える

連想配列型でも使えるが、引数を指定するとエラーになる。引数なしで呼ぶと、1つ目のキー列の内容でソートされる。

sortBy()~引数キーの昇順

sortBy()メソッドは引数にキーを指定して、そのキーの値の昇順で要素を並べ替えたコレクションを返す。

以下の例ではnameを指定して名前の昇順で並べ替えている。文字列は辞書順でソートされる。

以下の例ではheightを指定して並べ替えている。身長の数値が昇順となるように並んでいる。

sortByDesc()~引数キーの降順

sortByDesc()メソッドは引数にキーを指定して、そのキーの値の降順で要素を並べ替えたコレクションを返す。

以下の例では、身長の高い順に並べ替えている。

コレクションの変形・取出し

pluck()~キー列の取出し

pluck()メソッドは引数にキーを指定し、そのキーの値を単純配列のコレクションとして取り出す。pluckは英語で「摘む」という意味。

以下はgenderキーの値を取り出している例。

flatten()~コレクションの展開

flatten()メソッドは、多次元配列型のコレクションの要素を再帰的にたどって1次元の配列型に並べる。

連想配列はキーが無視され、値が使われる。

多次元配列の場合、再帰的に要素をたどって1次元化する。

SQL的処理

クエリービルダーメソッドと同等のwhere()groupBy()がある。ただしこれらのメソッドは、クエリービルダーの様にはクエリーを生成はしない。

where()~条件による抽出

where()メソッドはクエリービルダーメソッドのwhere()と同じ。

groupBy()~キーによるグルーピング

groupBy()メソッドは、指定したキー列の値で要素をグルーピングする。

  • 元の配列の要素として、指定したキー列の値をキーとした配列ができる
  • その配列の要素として、各キーに対応した値を持つ元の要素が格納される

以下の例ではgenderキーによってグルーピングしている。genderキーの値malefemaleをキーとする配列が作られ、キーがmaleの配列にはgendermaleの要素、キーがfemaleの配列にはgenderfemaleの要素が格納されている。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です