1. array_key_exists
原型:bool array_key_exists ( mixed key, array search )
描述:给定的key存在于数组中时返回TRUE,即使key对应的键值为NULL也返回true。array_key_exists() 也可用于对象

2. empty
原型:bool empty ( mixed var )
描述:如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
注意:
A. empty是语句而不是函数;
B. empty只能用于变量,诸如empty(addslashes($var))的用法是错误的,因为addslashes($var)返回常量。

3. isset
原型:bool isset ( mixed var [, mixed var [, ...]] )
描述:如果var存在则返回TRUE,否则返回FALSE;若使用 isset()测试一个被设置成 NULL 的变量,将返回 FALSE。
意:
A.
isset是语句而不是函数;
B. isset只
能用于变量,若想检测常量是否设置可以使用defined()函数。
C. 使用unset实际上就是将var置为NULL。

性能比较:
结论:isset ~ empty > array_key_exists
原因:isset和empty是语句,而array_key_exists是函数,后者比前者多了函数调用,因此性能上要稍差。而isset和empty的范围是不一样的,主要区别在于值为NULL的情况,需要特别注意。