再谈php中empty与isset区别详解
empty与isset在php中一个是为空,另一个判断是是否为一个存在的变量了,下面小编来给各位同学介绍php中empty与isset区别,欢迎各位同学进入参考.
empty是判断变量值是非空或非零的值,对应空定义包括:[](空字符串)、0、[0]、NULL、FALSE、array()和$var(只声明但未赋值),也就是说当变量值为上述这些,empty返回TRUE,其他的都返回FALSE.
isset是检测变量是否设置,并且不是 NULL,变量设置可以从几个方面来说,1:最简单的就是变量是否先声明和赋值;2:array中是否存在对应的index或key;3:object中是否存在对应的属性。
从上面的两个function定义可以看到,在某些情况下,两者可以公用,但其区别还是很大的,另外它们都只能检测变量,检测任何非变量的东西都将导致解析错误,例如直接检查另一个function的返回值(empty(otherFunction())),你将看到[Fatal error: Can’t use function return value in write context in]这样的错误.
另外isset可以一次检查多个变量,例如:isset($var1, $var2, $var3),当这三个值分别的isset都为TRUE结果为TRUE,否则结果为FALSE.
测试代码如下:
$sep = "<br />" ; echo 'test undeclared var empty : ' ; var_dump( empty empty ( $var )); // TRUE echo $sep . 'test undeclared var isset : ' ; var_dump(isset( $var )); // FALSE $var ; echo $sep . 'test declared var but no set value empty : ' ; var_dump( empty empty ( $var )); // TRUE echo $sep . 'test declared var but no set value isset : ' ; var_dump(isset( $var )); // FALSE, 变量申明未赋值,默认值为NULL $var = NULL; echo $sep . 'test declared var and set value NULL empty : ' ; var_dump( empty empty ( $var )); // TRUE echo $sep . 'test declared var and set value NULL isset : ' ; var_dump(isset( $var )); // FALSE, 变量申明赋值为NULL $var1 = '' ; $var2 = '0' ; $var3 = 0; $var4 = FALSE; $var5 = array (); //开源代码phpfensi测试数据 echo $sep . 'test ' ' empty : ' ; var_dump( empty empty ( $var1 )); // TRUE echo $sep . 'test ' 0 ' empty : ' ; var_dump( empty empty ( $var2 )); // TRUE echo $sep . 'test 0 empty : ' ; var_dump( empty empty ( $var3 )); // TRUE echo $sep . 'test FALSE empty : ' ; var_dump( empty empty ( $var4 )); // TRUE echo $sep . 'test array() empty : ' ; var_dump( empty empty ( $var5 )); // TRUE echo $sep . 'test ' ', ' 0 ', 0, FALSE, array() isset : ' ; var_dump(isset( $var1 , $var2 , $var3 , $var4 , $var5 )); // TRUE, 变量申明并赋值为空字符串输出的结果为:
test undeclared var empty empty : bool(true) test undeclared var isset : bool(false) test declared var but no set value empty empty : bool(true) test declared var but no set value isset : bool(false) test declared var and set value NULL empty empty : bool(true) test declared var and set value NULL isset : bool(false) test '' empty empty : bool(true) test '0' empty empty : bool(true) test 0 empty empty : bool(true) test FALSE empty empty : bool(true) test array () empty empty : bool(true) test '' , '0' , 0, FALSE, array () isset : bool(true)比如检测 $id 变量,当 $id=0 时,用empty() 和 isset() 来检测变量 $id 是否已经配置,两都将返回不同的值—— empty() 认为没有配置,isset() 能够取得 $id 的值,代码如下:
$id =0; empty empty ( $id )?print "It's empty ." :print "It's $id ." ; //结果:It's empty . print "<br>" ; !isset( $id )?print "It's empty ." :print "It's $id ." ; //结果:It's 0 .这意味着,我们在使用变量处理函数时,当该变量可能出现0的值,使用 empty() 要小心,这个时候用 isset 取代它更明智一些,当一个php页面的 URL 尾部参数出现 id=0 时,比如:test.php?id=0,试比较,代码如下:
可分开运行以下代码检测上述推断,代码如下:
if ( empty empty ( $id )) $id =1; print $id ; // 得到 1 if (!isset( $id )) $id =1; print $id ; //得到 0查看更多关于再谈php中empty与isset区别详解 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did31086