【PHP】多次元配列から任意のキーを指定して配列を生成する & 重複チェック

めだま

PHPにて、ユーザー情報が入った多次元配列から
メールアドレスの重複チェックを行いたい時にいろいろした時のメモ

ターゲットの多次元配列

  • 例えば下記のような内容の多次元配列をターゲットにする
array:3 [▼
  1 => array:3 [▼
    "name" => "田中さん"
    "email" => "tanaka@test.com"
  ]
  2 => array:3 [▼
    "name" => "山田さん"
    "email" => "yamada@test.com"
  ]
  3 => array:3 [▼
    "name" => "近藤さん"
    "email" => "kondo@test.com"
  ]
]

まずはこれの、メールアドレスだけ抜き出して配列にしてみる

array_column関数を使う

  • サンプルコード
// 対象の多次元配列
$users = [
  ['name' => '田中さん', 'email' => 'tanaka@test.com'],
  ['name' => '山田さん', 'email' => 'yamada@test.com'],
  ['name' => '近藤さん', 'email' => 'kondo@test.com'],
];

// ⭐️ emailだけの配列を生成
$emails = array_column($users, 'email');
// 出力してみる
var_dump(array_column($csvArray, 'email'));
  • 結果
array:3 [▼
  0 => "tanaka@test.com"
  1 => "yamada@test.com"
  2 => "kondo@test.com"
]

メールアドレスだけの配列できた

keyで抽出した配列のユニークチェックをしてみる

続いて本題、上記配列を使って重複チェックをしてみる

  • サンプルコード
$emails = array_column($users, 'email');
$uniqueArray = array_unique($emails);
if (count($uniqueArray) !== count($emails)) {
  echo '重複している値があります!';
}