检查密钥是否存在

使用 array_key_exists()isset()!empty()

$map = [
    'foo' => 1,
    'bar' => null,
    'foobar' => '',
];

array_key_exists('foo', $map); // true
isset($map['foo']); // true
!empty($map['foo']); // true

array_key_exists('bar', $map); // true
isset($map['bar']); // false
!empty($map['bar']); // false

请注意,isset()null 值元素视为不存在。而 !empty() 对于任何等于 false 的元素都是一样的(使用弱比较;例如,null''0 都被 !empty() 视为假)。虽然 isset($map['foobar']);true,但 !empty($map['foobar'])false。这可能会导致错误(例如,很容易忘记字符串'0'被视为假)因此使用 !empty() 通常是不受欢迎的。

另请注意,如果根本没有定义 $mapisset()!empty() 将起作用(并返回 false)。这使得它们在某种程度上容易出错:

// Note "long" vs "lang", a tiny typo in the variable name.
$my_array_with_a_long_name = ['foo' => true];
array_key_exists('foo', $my_array_with_a_lang_name); // shows a warning
isset($my_array_with_a_lang_name['foo']); // returns false

你还可以检查序数数组:

$ord = ['a', 'b']; // equivalent to [0 => 'a', 1 => 'b']

array_key_exists(0, $ord); // true
array_key_exists(2, $ord); // false

请注意,isset() 具有比 array_key_exists() 更好的性能,因为后者是一种功能而前者是一种语言结构。

你也可以使用 key_exists() ,这是 array_key_exists() 的别名。