引自:深入理解PHP之isset和array_key_exists对比

区别

isset 语言构造器 检测变量是否已设置并且非 NULL http://php.net/manual/zh/function.isset.php
array_key_exists 函数 检查数组里是否有指定的键名或索引 http://php.net/manual/zh/function.array-key-exists.php
  • isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists()
  • array_key_exists() 仅仅搜索第一维的键。 多维数组里嵌套的键不会被搜索到
  • 要检查对象是否有某个属性,应该去用 property_exists()

    总结

  • isset效率高于array_key_exists,PHP7之后有30%左右的提升,php5.6有将近70%的提升。

  • isset是语法结构, array_key_exists是函数,调用开销要小。
  • isset通过 Z_TYPE_P 获取变量类型,然后再进行判断实现的; array_key_exists则是通过hash查找来实现的。
  • 对于数组,isset的性能要高于array_key_exists所以,如果数组比较大,我们应该用如下方法保证性能和准确性 isset or array_key_exists