isset() 和 array_key_exists() 之间有什么区别?
2022-08-30 05:54:39
以下两个函数调用如何比较:
isset($a['key'])
array_key_exists('key', $a)
以下两个函数调用如何比较:
isset($a['key'])
array_key_exists('key', $a)
array_key_exists
肯定会告诉您数组中是否存在键,而 isset
仅在键/变量存在且不为 null
时才会返回。true
$a = array('key1' => 'フーバー', 'key2' => null);
isset($a['key1']); // true
array_key_exists('key1', $a); // true
isset($a['key2']); // false
array_key_exists('key2', $a); // true
还有另一个重要的区别:当不存在时,isset
不会抱怨,而array_key_exists
则存在。$a
介于 和 之间,虽然两者都非常快,但速度明显更快。如果此检查发生数千次,则需要使用 .array_key_exists
isset
[O(1)]
isset
isset
应该注意的是,它们并不相同,但是 -- 当数组键存在但值为 时,将返回并将返回 。如果该值可能是 ,则需要使用 。null
isset
false
array_key_exists
true
null
array_key_exists
如注释中所述,如果您的值可能是 ,则快速选择是:null
isset($foo[$key]) || array_key_exists($key, $foo)