(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)
array_key_exists — 检查数组里是否有指定的键名或索引
数组里有键 key 时,array_key_exists() 返回 true 。
key
可以是任何能作为数组索引的值。
key要检查的键。
array一个数组,包含待检查的键。
| 版本 | 说明 |
|---|---|
| 8.5.0 |
在 key 参数中使用 null 已被弃用,请改用空字符串。
|
| 8.0.0 |
key 参数现在接受
bool 、float 、int 、null 、resource
和 string 作为参数。
|
| 8.0.0 |
不再支持将 object 传递给 array 参数。
|
| 7.4.0 |
已弃用将 object 传递给 array 参数。建议使用 property_exists() 。
|
示例 #1 array_key_exists() 示例
<?php
$searchArray = ['first' => 1, 'second' => 4];
var_dump(array_key_exists('first', $searchArray));
?>以上示例会输出:
bool(true)
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]??[]) ;
?>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;
}