3个回答
推荐于2017-09-23 · 知道合伙人教育行家
关注
展开全部
在PHP中变量是以C语言的结构体来存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的。
于是"",false,NULL(null 不区分大小写)在===判定的时候以变量类型进行区分。
在下列情况下一个变量被认为是 NULL:
1.被赋值为 NULL。
2.尚未被赋值。
3.被 unset()。
注:unset() 销毁指定的变量。
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现
更多请见php官方文档……
empty,isset,is_null 的区别:
empty,isset首先都会检查变量是否存在,然后对变量值进行检测。
而is_null 只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!
empty,isset输入参数必须是一个变量(php变量是以$字符开头的),而is_null输入参数只要是能够有返回值就可以。(常量,变量,表达式等)。
在php手册里面,对于他们解析是:empty,isset 是一个语言结构而非函数,因此它无法被变量函数调用。
empty
如果 变量 是非空或非零的值,则 empty() 返回 FALSE。
换句话说,""、0、"0"、NULL、FALSE、array()、var $var、未定义;
以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
isset
如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。
变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。
注意,isset对于NULL值变量,特殊处理。
于是"",false,NULL(null 不区分大小写)在===判定的时候以变量类型进行区分。
在下列情况下一个变量被认为是 NULL:
1.被赋值为 NULL。
2.尚未被赋值。
3.被 unset()。
注:unset() 销毁指定的变量。
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现
更多请见php官方文档……
empty,isset,is_null 的区别:
empty,isset首先都会检查变量是否存在,然后对变量值进行检测。
而is_null 只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!
empty,isset输入参数必须是一个变量(php变量是以$字符开头的),而is_null输入参数只要是能够有返回值就可以。(常量,变量,表达式等)。
在php手册里面,对于他们解析是:empty,isset 是一个语言结构而非函数,因此它无法被变量函数调用。
empty
如果 变量 是非空或非零的值,则 empty() 返回 FALSE。
换句话说,""、0、"0"、NULL、FALSE、array()、var $var、未定义;
以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
isset
如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。
变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。
注意,isset对于NULL值变量,特殊处理。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询