【PHP】連想配列からカラム名と値を指定して検索を行う

まぐろ

例えばユーザー情報が入った連想配列を対象に、
任意のメールアドレスで検索をかけたい場合など

// 対象の連想配列
$users = [
    [
        'email' => 'aaa@aaa.com',
        'name' => 'ユーザーA',
    ],[
        'email' => 'bbb@bbb.com',
        'name' => 'ユーザーB',
    ],[
        'email' => 'ccc@ccc.com',
        'name' => 'ユーザーC',
    ],
];

// 検索を行う
$key = array_search('bbb@bbb.com', array_column($users, 'email'));
// $keyには見つかったユーザーのindexが入っている
if ($key) {
  $user = $users[$key]; // $key==1
} else {
  // 一致する項目がなかったときの処理
}

array_search('{検索したいメールアドレス}', array_column({配列}, '{カラム名}'))

関数化してあげると便利かも

function search ($value, $key, $array) {
   foreach ($array as $k => $val) {
       if ($val[$key] == $value) {
           return $k;
       }
   }
   return null;
}

$user = search('bbb@bbb.com', 'email', $users);
if (!is_null($user)) {
  var_dump($user);
} else {
  // 一致する項目がなかったときの処理
}

\ 案件のご依頼・ご相談はこちらから /