skillup

技術ブログ

ドキュメント作成 プログラミング全般

コレクションの頻出処理に関して

投稿日:

PHPでコレクションを使っていますが、慣れると本当に便利ですね・・・まあforeachとかでグリグリやってもいいのですが、無駄にコードが長くなります。

自分がコレクションでよく使う再頻出のメソッドなどを。(メソッド名はLaravelのものを使っていますが、似たものは大概他のフレームワークでもあるかと思います。)

map

配列の中の変換作業を行います。単純に配列の中身をいじる時や新たな配列を作りたい時など、シンプルなだけに使用頻度は高めです。

groupBy

使用頻度はかなり高いです。例えば売上伝票データがあってそれを顧客ごと、担当者ごと、月ごとにまとめたい時などは大概これを使います。

使えないときは一生懸命、foreachでグルグル回しながらやってましたね・・・

複数キー(月+顧客ごと)の場合でも大概文字列を結合させてかけることが一般的です。多段の場合はgroupByした後にmapのなかでさらにgroupByを使います。

mapなどと違ってforeachではかなり面倒臭いので早い段階で覚えておきたいメソッドです。

pluck

あるプロパティだけを抽出させたいときに使います。

例えば

みたいなデータがあったときにnameだけ、ageだけを取り出したいといったようなケースです。

ちなみにLaravelでは2つの引数を指定すると、片方をインデックス番号、もう片方を値にしてくれるので、プルダウンなどの値を作るときに非常に重宝します。

filter

特定の値のみを抽出します。例えばstatus=10の伝票のみを抽出して売上を計算したい場合などはこのメソッドが使えます。逆のrejectなども稀に使います。

keyBy

多次元連想配列を使っているときに配列のインデックス番号を数字ではなく連想配列の特定のキーに置き換えたいときに使います。ハッシュで操作をしたい場合などはかなりよくあるケースなので、使えます。

flatten

多段階層になっているときに下の階層のデータをまとめて取りたいとき。

参考リンク

基本的な使用法は下記にのっています。

https://laravel.com/docs/5.6/collections

他の言語やフレームワークを使う場合でもまずこれらを押さえておけば、基本的な処理は困らないのではないかと。

 

-ドキュメント作成, プログラミング全般
-, ,

執筆者:


comment

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

関連記事

no image

phing

今までphpunit,phpmd,phpcodesniffer,phpdocumentなどのツールをいろいろと試してきますが、個別に動かしていると大変面倒ですので、これを一気に行えるライブラリがありま …

no image

Gitの活用に関して

今回はgitの技術的なことではなく、主に運用に関して。超基礎的なことですが、チームで開発する場合にはルールを徹底してないと混乱をきたします。 Contents1 ブランチを追加機能ごとにきる2 バグに …

no image

障害報告などでの伝える情報の視点

障害の重要度(後続タスクにブロックがあるかいなか)、調査原因(仕様不理解、設計考慮もれ、ケアレスミス)、影響度(画面単位などで) 障害が起こっているデータ(あるいはスクショなどで伝えられるか) 再現プ …

no image

コード静的解析ツールを使った際の気づきなど

最近のプロジェクトでコード静的解析ツール(phpcs,phpmd)を使った際の気づきなど コードを書きながら常時エディタがチェックするタイプのものでないとまず無理(保存するたびでも無理だし、コミット時 …

no image

変数の役割について

前回のエントリーの主眼は変数を置くことで、適切な情報量に分割し、コードを読みやすくしよう、ということでした。 今回はそれとは少し逆の観点でして、不要な変数を削除して、コードを読みやすくしよう、というこ …

アーカイブ