php中empty()、isset()、is_null()和变量本身的布尔判断区别(转)
在php脚本中,我们经常要去判断一个变量是否已定义或者是否为空,就需要用到这些函数empty()、isset()、is_null()和其本身作为参数,下面小段程序做个简要比较

<?php
//预定义变量数组:空字符,字符0,数组0,null,布尔false,空数组
$arr_var = array('', '0', 0, null, false, array()); foreach ($arr_var as $value) {
echo '<br>传入值为:' . $value . '<br>';
if (!isset($value)) {
echo 'isset()==false<br>';
}
if (empty($value)) {
echo 'empty()==true<br>';
}
if (!$value) {
echo 'self==false<br>';
}
if (is_null($value)) {
echo 'is_null()==true<br>';
}
}
?>
输出结果: 传入值为:
empty()==true
self==false 传入值为:0
empty()==true
self==false 传入值为:0
empty()==true
self==false 传入值为:
isset()==false
empty()==true
self==false
is_null()==true 传入值为:
empty()==true
self==false 传入值为:Array
empty()==true
self==false

总结一:从结果中可以看出,""、0、"0"、NULL、FALSE、array()这几个中,empty()和“变量本身作为参数”结果一致,均作为“空”来处理,而isset()和is_null ()仅当是null时,才作为“空”来处理(值得注意的是false并不会被认为是空)
下面我们看下当一个变量未定义初始化时,这些函数返回的是什么

echo '<br>传入值为:undefine<br>';
if (!isset($value_undefine)) {
echo 'isset()==false<br>';
}
if (empty($value_undefine)) {
echo 'empty()==true<br>';
}
if (!$value_undefine) {
echo 'self==false<br>';
}
if (is_null($value_undefine)) {
echo 'is_null()==true<br>';
}
输出结果: 传入值为:undefine
isset()==false
empty()==true (此处警告变量未定义)
self==false (此处警告变量未定义)
is_null()==true

总结二:由结果可看出,当变量未定义时,is_null()和“本身参数”是不允许作为参数判断的,虽然结果可以判断出来为“空”,建议不使用。
isset()和empty()可以正常判断出为"空"的.
|
1
2
3
4
5
6
7
8
9
|
最后总结:isset(),仅当null和未定义,返回falseempty(),""、0、"0"、NULL、FALSE、array(),未定义,均返回false本身作为参数,与empty()一致,但接受未定义变量时,报警告is_null(),仅判断是否为null,未定义报警告 |
http://www.cnblogs.com/huangzhen/archive/2011/08/21/2147808.html#3303118
php中empty()、isset()、is_null()和变量本身的布尔判断区别(转)的更多相关文章
- php中empty()、isset()、is_null()和变量本身的布尔判断区别
<?php//预定义变量数组:空字符,字符0,数组0,null,布尔false,空数组$arr_var = array('', '0', 0, null, false, array()); fo ...
- 深入PHP empty(),isset(),is_null()
PHP empty(),isset(),is_null()的实例测试. 有关 PHP编程 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资 ...
- empty,isset,is_null比较(差异与异同)
做php开发时候,想必在使用:empty,isset,is_null 这几个函数时候,遇到一些问题.甚至给自己的程序带来一些安全隐患的bug.很多时候,对于isset,empty都认为差不多.因此开 ...
- php empty,isset,is_null判断比较(差异与异同)
php empty,isset,is_null判断比较(差异与异同) 作者: 字体:[增加 减小] 类型:转载 做php开发时候,想必在使用:empty,isset,is_null 这几个函数时候,遇 ...
- php empty,isset,is_null比较(差异与异同)
php empty,isset,is_null比较(差异与异同) http://www.cnblogs.com/chengmo/archive/2010/10/18/1854258.html
- laravel中empty(),is_null() 以及isEmpty()
PHP中 empty() empty() 函数用于检查一个变量是否为空. if(empty($result->order)){ //操作 } is_null() is_null() 函数用于检测 ...
- PHP中的逻辑判断函数empty() isset() is_null() ==NULL ===NULL
1.empty() header("Content-type: text/html; charset=utf-8"); if(!empty($data)){ //empty() 未 ...
- PHP中empty,is_null,isset的区别
有时候分不清这几个的区别,特此记录,以备不时之需 isset 判断变量是否已存在 empty 判断变量是否为空或为0 is_null 判断变量是否为NULL 变量 empty is_null isse ...
- php empty isset is_null
总是忘记这些变量的区别,参考下http://www.jb51.net/article/38020.htm,记录下 设置几个变量 <?php $a; $b = false; $c = ''; $d ...
随机推荐
- Oracle闪回flashback总结
1.说明: Ø 采用的技术. 使用的是多个技术. 1. 闪回日志 2. 回收站 3. 回滚段 无法使用回收站的操作 Drop table xxx purge; Drop ...
- 前端project师,确定你的目标吧!无能的人才管他叫命运
导语: 你为自己定过一个不靠谱的目标,是20年前的事了吧. 长大你想干什么?你的回答是什么?现在实现了吗? 如今,你每天都坐在同一个格子间的同一个电脑前,会不会感到每天都像是在复印,感到前途是模糊的, ...
- js遍历对象的数组
遍历数组: 1.js关键for遍历 2.jquery提供each功能 ----------------------------------- $.each(array, function(){ ...
- android Activity之间数据传递 Parcelable和Serializable接口的使用
Activity之间传数据时,为了避免麻烦,往往会将一些值封装成对象,然后将整个对象传递过去.传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口.0.解 ...
- QModelIndex有internalPointer()函数,可以存任何数据,另有QAbstractItemModel::createIndex来创造节点
整个model的节点数据,都靠它来记录了. 另有一个创造节点的函数(自带函数): QModelIndex QAbstractItemModel::createIndex(int arow, int a ...
- javascript 中 事件流和事件冒泡
一.事件流 是描述页面接受事件的顺序,IE 使用的是时间冒泡流;而Netscape的事件采用的是事件捕获流.1.事件冒泡JS 和 HTML是通过事件的方式实现交互.事件冒泡 开始元素,将事件逐级传递, ...
- perl uri_escape(urlencode ) 转换
[root@wx03 lib]# cat a1.pl #引入模块 use URI::Escape; #urlencode $encoded = uri_escape("[中均]") ...
- css3 动画运动路径
1.cubic-bezier贝塞尔曲线CSS3动画工具 http://www.xuanfengge.com/cubic-bezier-bezier-css3-animation-tools.html ...
- javascript 精典案例分析一览
1.[优雅代码]深入浅出 妙用Javascript中apply.call.bind http://www.cnblogs.com/coco1s/p/4833199.html 2.1.0.1 ionic ...
- Python 链接MysqlDB
下载安装MySQLdb <1>linux版本 http://sourceforge.net/projects/mysql-python/ 下载,在安装是要先安装setuptools,然后在 ...