一般社団法人 全国個人事業主支援協会

COLUMN コラム

下記のようにDBから取ってきたデータを連想配列にして、重複したレコードを削除したいときってよくある。

$stations = [ 
   ['id' => 1, 'name' => '恵比寿'],
   ['id' => 2, 'name' => '渋谷'],
   ['id' => 3, 'name' => '新宿'],
   ['id' => 4, 'name' => '恵比寿'],
];

ここから恵比寿を削除した3つの配列にするためのメモ。

$tmp = [];
$uniqueStations = [];
foreach ($stations as $station){
   if (!in_array($station['name'], $tmp)) {
      $tmp[] = $station['name'];
      $uniqueStations[] = $station;
   }
}

メソッド化しておいても良いレベルかも。


class Util {
   public static function getUniqueArray($array, $column)
   {   
      $tmp = []; 
      $uniqueArray = []; 
      foreach ($array as $value){
         if (!in_array($value[$column], $tmp)) {
            $tmp[] = $value[$column];
            $uniqueArray[] = $value;
         }   
      }   
      return $uniqueArray;    
   }   
}

$stations = Util::getUniqueArray($stations, 'name');
echo("<pre>");var_dump($stations);echo("<pre>");

結果がこちら。


array(3) {
  [0]=>
  array(2) {
    ["id"]=>
    int(1)
    ["name"]=>
    string(9) "恵比寿"
  }
  [1]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(6) "渋谷"
  }
  [2]=>
  array(2) {
    ["id"]=>
    int(3)
    ["name"]=>
    string(6) "新宿"
  }
}
The following two tabs change content below.

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア