Laravel Collectionを使って2次元配列の重複を排除する
こんにちは。今回はLaravelのCollectionを使用して2次元配列の重複を排除していきたいと思います。
1次元配列の重複を排除する方法は以下の記事で解説しているので、必要な場合は参照ください。Laravel Collectionを使ってデータの重複を排除する
2次元配列が重複する状態とは
まずは以下の表をご覧ください。社員IDをキーとする社員テーブルです。
社員ID | 社員名 |
1 | 田中 |
2 | 鈴木 |
1 | 田中 |
上記の表をPHPで取得すると以下のような2次元配列となります。
[
[
'shain_id' => '1',
'shain_name' => '田中'
],
[
'shain_id' => '2',
'shain_name' => '鈴木'
],
[
'shain_id' => '1',
'shain_name' => '田中'
],
]
社員ID=1の田中さんが重複しています。社員数を数えるために重複しているデータを取り除きたい場合、どうすればよいでしょうか。
2次元配列の重複を排除する
LaravelのCollectionを使用すると簡単に重複を排除することができます。CollectionのkeyByメソッドを使用します。このメソッドは引数で指定したキーCollectionの要素を一意にします。
$collection = collect([['shain_cd'=>'1','shain_name'=>'tanaka'],['shain_cd'=>'2','shain_name'=>'suzuki'],['shain_cd'=>'1','shain_name'=>'tanaka']]);
$uniqueCollection = $collection->keyBy('shain_cd');
// 結果:shain_cd=1の重複が取り除かれる
[
1 => [
"shain_cd" => "1",
"shain_name" => "tanaka",
],
2 => [
"shain_cd" => "2",
"shain_name" => "suzuki",
],
]
まとめ
2次元配列の重複排除について解説しました。
- LaravelのCollectionを使用すると簡単に実装できる。
- CollectionのkeyByメソッドを使用する。
2次元配列はピュアphpで実装しようとすると、これといった解決策が無いので苦労する部分だと思います。Laravelフレームワークを使用しているようであればCollectionで簡単に実装することができます。利用したいシーンは多々あると思いますので是非覚えてもらえればと思います。
ディスカッション
コメント一覧
まだ、コメントがありません