isset() 和 array_key_exists() 之间有什么区别?

php
2022-08-30 05:54:39

以下两个函数调用如何比较:

isset($a['key'])

array_key_exists('key', $a)

答案 1

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


答案 2

介于 和 之间,虽然两者都非常快,但速度明显更快。如果此检查发生数千次,则需要使用 .array_key_existsisset[O(1)]issetisset

应该注意的是,它们并不相同,但是 -- 当数组键存在但值为 时,将返回并将返回 。如果该值可能是 ,则需要使用 。nullissetfalsearray_key_existstruenullarray_key_exists


如注释中所述,如果您的值可能是 ,则快速选择是:null

isset($foo[$key]) || array_key_exists($key, $foo)

推荐