综合归纳:PHP中empty()、is_null()和isset()的区别
来源:互联网 发布:维吉尼亚算法 编辑:程序博客网 时间:2024/05/16 15:10
为方便不想看代码的同学,先总结(php.net上有现成的):
1、先看empty():
当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.
以下的东西被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
2、isset和is_null一样,只在值不存在、值为null时认为满足条件,但是有个区别:isset 是字面量,is_null是函数,在值没有初使化和不存在时,is_null会有Notice提醒,如果这点不清楚,可以参考laruence的博客http://www.laruence.com/2009/12/09/1180.html
对于不存在的值,注意:empty返回的也会是true
var_dump(isset($a_noexist));//bool(false)var_dump(empty($a_noexist));//bool(true)var_dump(is_null($a_noexist));//bool(true) Notice: Undefined variable: a_noexist
对于""值,因为""也是值,所以不难理解结果
$a="";var_dump(isset($a));//bool(true)var_dump(empty($a));//bool(true)var_dump(is_null($a));//bool(false)
对于NULL值
$a=NULL;var_dump(isset($a));//bool(false)var_dump(empty($a));//bool(true)var_dump(is_null($a));//bool(true)
对于数字0及字符串"0"结果一样
$a=0;//用$a="0"一样var_dump(isset($a));//bool(true)var_dump(empty($a));//bool(true)var_dump(is_null($a));//bool(false)
对于TRUE/FALSE,true好理解,我们看false,其实false和数值0一样
$a=FALSE;var_dump(isset($a));//bool(true)var_dump(empty($a));//bool(true)var_dump(is_null($a));//bool(false)
另外一个容易掉的坑:http://www.laruence.com/2011/12/19/2409.html
在php5.4具体的改变是, 如果变量$a是一个字符串, 那么, 对于非数字型索引, 比如$a["foo"], 在isset的时候将返回false, empty返回true,
但是为了兼容已有的代码, 当你获取这个值的时候, 还是会返回$a[0], 不过会额外抛出一个警告信息. 比如:
<?php$a = "laruence";var_dump($a["foo"]) ; //PHP Warning: Illegal string offset 'foo'//output string(1) "l" var_dump(isset($a["foo"]));//false var_dump(empty($a["foo"]));//true
而对于键值是bool, double, null的情况, 将会和以前保持一致, 不过会抛出一个Notice信息.
<?php$a = "bar";echo $a[TRUE]; //PHP Notice: String offset cast occured//output a
1 0
- 综合归纳:PHP中empty()、is_null()和isset()的区别
- php中empty() isset() is_null() 的区别
- PHP中 is_null、empty、isset的区别
- PHP中isset,empty,is_null的使用方法和区别
- isset 和empty 区别: php中is_null,empty,isset,unset 的区别详细介绍
- php中empty(), is_null(), isset()函数区别
- php中empty(), is_null(), isset()函数区别
- php中empty(),is_null(),isset(),bool之间的区别
- php中empty(),is_null(),isset(),bool之间的区别
- php中is_null,empty,isset,unset 的区别详细介绍
- php中is_null,empty,isset,unset 的区别详细介绍
- php中is_null,empty,isset,unset 的区别详细介绍
- php中is_null,empty,isset,unset 的区别
- php中函数 isset(), empty(), is_null() 的区别
- php中函数 isset(), empty(), is_null() 的区别
- php中is_null,isset,empty的总结
- php中empty()、isset()、is_null()和变量本身的布尔判断区别
- empty,is_null,isset的区别
- JDK与JRE及其在Eclipse中的使用
- 浮躁的时候看这儿
- Lasso和Elastic net的区别
- 【代码笔记】iOS-检测手机翻转
- Android BroadcastReceiver学习总结
- 综合归纳:PHP中empty()、is_null()和isset()的区别
- OpenGL
- Android中的Thread与AsyncTask的区别?
- java泛型
- 【poj 3258】River Hopscotch 题意&题解&代码(C++)
- oracle的SQL语句中的(+)是干什么用的?
- angularJs中上传图片/文件功能:ng-file-upload
- 使 Spine 忽略 TimeScale 的影响
- 通过intent和bundle来进行Activity和Fragment的数据传递