PHP 8.3.32 Released!

array_key_exists

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

array_key_exists检查数组里是否有指定的键名或索引

说明

function array_key_exists(string |int |float |bool |resource |null $key, array $array): bool

数组里有键 key 时,array_key_exists() 返回 true key 可以是任何能作为数组索引的值。

参数

key

要检查的键。

array

一个数组,包含待检查的键。

返回值

成功时返回 true , 或者在失败时返回 false

注意:

array_key_exists() 仅仅搜索第一维的键。 多维数组里嵌套的键不会被搜索到。

更新日志

版本 说明
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)

示例 #2 array_key_exists()isset() 的对比

isset() 对于数组中为 null 的值不会返回 true ,而 array_key_exists() 会。

<?php
$searchArray = ['first' => null, 'second' => 4];
var_dump(isset($searchArray['first']));
var_dump(array_key_exists('first', $searchArray));
?>

以上示例会输出:

bool(false)
bool(true)

参见

  • isset() - 检测变量是否已声明并且其值不为 null
  • array_keys() - 返回数组中部分的或所有的键名
  • in_array() - 检查数组中是否存在某个值
  • property_exists() - 检查对象或类是否具有该属性

发现了问题?

了解如何改进此页面提交拉取请求报告一个错误
+添加备注

用户贡献的备注 2 notes

up
12
Rumour
2 years 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]??[]) ;
?>
up
11
Julian
3 years 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;
}
+添加备注

AltStyle によって変換されたページ (->オリジナル) /