php empty() isset() is_null判断变量是否存在区别详细讲解
|
做php开发时候,想必在使用:empty,isset,is_null 这几个函数时候,遇到一些问题。甚至给自己的程序带来一些安全隐患的bug。很多时候,对于isset,empty都认为差不多。因此开发时候,就没有注意,一段作为流程判断时候,就出现bug问题了. 一、举例说明A.如何判断一个变量是否定义? // 假设不存在$test 变量 $isset = isset($test) ? "test is define!" : "test is undefine!"; echo "isset:$isset",' // 作者: www.manongjc.com $empty = !empty($test) ? "test is define!" : "test is undefine!"; echo "empty:$empty",' $is_null = is_null($test) ? "test is define!" : "test is undefine!"; echo "is_null:$is_null"; 测试结果是: isset:test is undefine! empty:test is undefine! is_null:test is define! 结果表明:empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误! B、看下各自接收的参数是什么? 1、isset函数参数: $test=100; echo isset($test),isset(100),$isset($b=100); 输出: Parse error: parse error,unexpected T_LNUMBER,expecting T_STRING or T_VARIABLE or '$' in PHPDocument3 on line 3 2、empty函数参数: $test=100; echo empty($test),empty(100),empty($b=100); 输出: Parse error: parse error,expecting T_STRING or T_VARIABLE or '$' in PHPDocument3 on line 3 3、is_null函数参数: $test=100; echo is_null($test),is_null(100),is_null($b=100); 运行结果:没有任何错误。 结果表明:empty,isset输入参数必须是一个变量(PHP变量是以$字符开头的),而is_null输入参数只要是能够有返回值就可以(常量,变量,表达式等)。在PHP手册里面,对于他们解析是:empty,isset 是一个语言结构而非函数,因此它无法被变量函数调用。 二、概括总结isset,empty,is_null区别:empty() 如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var、未定义,以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。 isset() 如果 变量 存在且值非NULL,则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。 is_null() 检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
