array_key_exists

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

array_key_exists检查给定的键或索引是否在数组中存在

描述

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

array_key_exists() 如果给定的 key 在数组中设置,则返回 truekey 可以是数组索引的任何可能值。

参数

key

要检查的值。

array

包含要检查的键的数组。

返回值

成功时返回 true,失败时返回 false

注意:

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

变更日志

版本 描述
8.0.0 key 参数现在接受 boolfloatintnullresourcestring 作为参数。

范例

范例 #1 array_key_exists() 例子

<?php
$search_array
= array('first' => 1, 'second' => 4);
if (
array_key_exists('first', $search_array)) {
echo
"The 'first' element is in the array";
}
?>

范例 #2 array_key_exists() vs isset()

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

<?php
$search_array
= array('first' => null, 'second' => 4);

// 返回 false
isset($search_array['first']);

// 返回 true
array_key_exists('first', $search_array);
?>

注释

注意:

出于向后兼容性的原因,array_key_exists() 也会在 key 是作为 array 给出的 object 内定义的属性时返回 true。这种行为从 PHP 7.4.0 开始弃用,从 PHP 8.0.0 开始移除。

要检查对象中是否存在属性,应该使用 property_exists()

参见

添加注释

用户贡献的注释 3 个注释

Rumour
1 年前
在 PHP7+ 中,要查找多维数组中是否存在某个值,只需使用空合并运算符: ??

因此,对于一个三维数组,您不确定任何键是否实际存在

<?php

// 而不是:
$exists = array_key_exists($key1, $arr) && array_key_exists($key2, $arr[$key1]) && array_key_exists($key3, $arr[$key1][$key2]) ;

// 使用:
$exists = array_key_exists($key3, $arr[$key1][$key2]??[]) ;

?>
Julian
1 年前
当您要检查多个数组键时

<?php

$array
= [];
$array['a'] = '';
$array['b'] = '';
$array['c'] = '';
$array['d'] = '';
$array['e'] = '';

// 所有给定的键 a、b、c 在提供的数组中存在
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;
}
manhon824 at gmail dot com
13 年前
我花了几个小时来调试,最后我发现,

您必须在使用 array_key_exists 之前重置 $array
reset($array);
array_key_exists($needle,$array);

否则您将得不到任何回复。
To Top