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で簡単に実装することができます。利用したいシーンは多々あると思いますので是非覚えてもらえればと思います。

Laravel

Posted by kobainmac