array_key_exists()関数
array_key_exists()
関数は、
配列に特定のキー(インデックス)が存在するかどうかを確認します。
確認したいキーが配列内に存在する場合は、true
を返し、存在しない場合は false
を返します。
array_key_exists()
関数は配列内の特定の1つのキーのみを確認できますが、
ループ処理を活用すれば、配列内の複数のキー(multiple keys)を確認することも可能です。
array_key_exists()
関数の構文は次のとおりです。
構文
array_key_exists(mixed $key, array $array): bool
パラメータ
$key |
必須。配列内で探したい(確認したい)キーを指定します。 |
---|---|
$array |
必須。検索を実行する配列を指定します。 |
戻り値
確認したいキーが配列内に存在すればtrue
を返し、存在しなければfalse
を返します。
重要array_key_exists()
関数は配列の最上位(一次元)キーのみを検索します。多次元配列のネストされたキーは確認しません。
変更ログ
バージョン | 説明 |
---|---|
8.0.0 | $key パラメータは現在、bool 、float 、int 、null 、resource 、string 型の値を受け取ることができます。 |
8.0.0 | $array パラメータにオブジェクトを渡すことはもはやサポートされていません。 |
7.4.0 | $array パラメータにオブジェクトを渡すことはもはや推奨されておらず(deprecated)、オブジェクトのプロパティを確認する場合はproperty_exists() 関数を使用することをおすすめします。 |
使用例
$studentScores = [
'Alice' => 85,
'Bob' => 90,
'Charlie' => 78,
'David' => 95
];
if (array_key_exists('Bob', $studentScores)) {
echo 'Bobの点数が配列に存在します。';
} else {
echo 'Bobの点数が配列に存在しません。';
}
// 出力:'Bobの点数が配列に存在します。'
上記の例では、array_key_exists('Bob', $studentScores)
は$studentScores
配列内に'Bob'
というキーが存在するため、true
を返します。したがって、「Bobの点数が配列に存在します。」が出力されます。
配列の複数のキーを確認するために繰り返し処理を活用する
array_key_exists()
関数は配列内の単一のキーを検索するために使用されるため、
複数のキーを同時に確認するには、foreach()
ループとarray_key_exists()
関数を組み合わせて使うことが有効です。
// 検査対象の配列
$myArray = [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
// 他の複数のキー…
];
// 確認したい複数のキー
$keysToCheck = ['key1', 'key2', 'key5', 'key7'];
// ループで各キーを確認
foreach ($keysToCheck as $key) {
if (array_key_exists($key, $myArray)) {
echo "キー '$key' は配列に存在します。<br>";
} else {
echo "キー '$key' は配列に存在しません。<br>";
}
}
キー 'key2' は配列に存在します。
キー 'key5' は配列に存在しません。
キー 'key7' は配列に存在しません。
上記の例では、array_key_exists()
関数を使って、$myArray
配列内で$keysToCheck
配列に含まれるそれぞれのキーを確認し、該当するキーが存在するかどうかを出力しています。ループを利用することで、複数のキーを一度に確認できます。
参考として、PHP 5.6以降では、array_key_exists()
の代わりにisset()
関数を使用しても同じ結果を得ることができます。例えば以下のように使います。
// 検査対象の配列
$myArray = [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
// 他の複数のキー…
];
// 確認したい複数のキー
$keysToCheck = ['key1', 'key2', 'key5', 'key7'];
foreach ($keysToCheck as $key) {
if (isset($myArray[$key])) { // array_key_exists()の代わりにisset()関数を使用
echo "キー '$key' は配列に存在します。<br>";
} else {
echo "キー '$key' は配列に存在しません。<br>";
}
}
array_key_exists()
の代わりにisset()
関数を使用しても同じ結果を得ることができます。
キー 'key2' は配列に存在します。
キー 'key5' は配列に存在しません。
キー 'key7' は配列に存在しません。
array_key_exists()
とisset()
の両関数は配列内で特定のキーが存在するかを確認するために使われます。ただし、isset()
関数は変数の存在だけでなく値がnullでないかも確認するため、若干のパフォーマンス差がある場合があります。複数のキーを確認する際にはパフォーマンス差はあまり大きくないため、使いやすい方法を選んで使用してください。
有用な事例
PHPのarray_key_exists()
関数は、配列内に特定のキーが存在するかどうかを確認する際に非常に有用です。以下はいくつかの有用な事例です。
多次元配列でキーを確認する
多次元配列でネストされたキーが存在するかを確認できます。これは設定ファイルやデータ構造内で特定の設定値が存在するかどうかを確認する際に有用です。
$config = [
'database' => [
'host' => 'localhost',
'username' => 'myuser',
'password' => 'mypassword',
// ...
],
// ...
];
if (array_key_exists('database', $config) && array_key_exists('username', $config['database'])) {
echo 'データベース情報が設定されています'; // 出力: 'データベース情報が設定されています'
} else {
echo 'データベース情報が欠落しているか、設定が正しくありません';
}
多言語アプリケーション
多言語アプリケーションで言語ごとに異なるメッセージを表示する必要がある場合、対象の言語キーが存在するかどうかを確認して処理を行うことができます。
$lang = [
'en' => [
'greeting' => 'Hello',
// ...
],
'ja' => [
'greeting' => 'こんにちは',
// ...
],
// ...
];
$selectedLanguage = 'ja'; // ユーザーが選択した言語
if (array_key_exists($selectedLanguage, $lang)) {
echo $lang[$selectedLanguage]['greeting']; // 出力: 'こんにちは'
} else {
echo "サポートされていない言語です。";
}
上記の例では、$selectedLanguage
が'ja'
に設定されているため、日本語の「こんにちは」が表示されます。
このように、array_key_exists()
関数は配列内に特定のキーが存在するかどうかを素早く簡単に確認するのに非常に有用です。さまざまな状況で利用して、データの有効性を検証し、ロジックを構築することができます。