array_key_exists
(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
array_key_exists — 指定したキーまたは添字が配列にあるかどうかを調べる
説明
指定した key
が配列に設定されている場合、
array_key_exists() は true
を返します。
key
は配列添字として使用できる全ての値を使用可能です。
パラメータ
key
-
調べる値。
array
-
キーが存在するかどうかを調べたい配列。
戻り値
成功した場合に true
を、失敗した場合に false
を返します。
注意:
array_key_exists() は、最初のレベルのキーだけを捜します。 多次元配列のネストされたキーは、この関数では見つけられません。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 |
key パラメータは
bool , float , int ,
null , resource ,
string を引数として受け入れるようになりました。
|
例
例1 array_key_exists() の例
<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "この配列には 'first' という要素が存在します";
}
?>
注意
注意:
過去との互換性を保つため、
key
が仮にarray
で指定したオブジェクトのプロパティであっても array_key_exists() はtrue
を返します。 この挙動は PHP 7.4.0 で非推奨となり、PHP 8.0.0 以降で削除されています。オブジェクトのプロパティが存在するかどうかを調べるには、 property_exists() を使いましょう。
参考
- isset() - 変数が宣言されていること、そして null とは異なることを検査する
- array_keys() - 配列のキーすべて、あるいはその一部を返す
- in_array() - 配列に値があるかチェックする
- property_exists() - オブジェクトもしくはクラスにプロパティが存在するかどうかを調べる
+add a note
User Contributed Notes 2 notes
Julian ¶
1 year ago
When you want to check multiple array keys:
<?php
$array = [];
$array['a'] = '';
$array['b'] = '';
$array['c'] = '';
$array['d'] = '';
$array['e'] = '';
// all given keys a,b,c exists in the supplied array
var_dump(array_keys_exists(['a','b','c'], $array)); // bool(true)
function array_keys_exists(array $keys, array $array): bool
{
$diff = array_diff_key(array_flip($keys), $array);
return count($diff) === 0;
}
Rumour ¶
1 year ago
In PHP7+ to find if a value is set in a multidimensional array with a fixed number of dimensions, simply use the Null Coalescing Operator: ??
So for a three dimensional array where you are not sure about any of the keys actually existing
<?php
// instead of:
$exists = array_key_exists($key1, $arr) && array_key_exists($key2, $arr[$key1]) && array_key_exists($key3, $arr[$key1][$key2]) ;
// use:
$exists = array_key_exists($key3, $arr[$key1][$key2]??[]) ;
?>