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 ...
随机推荐
- 暴力或随机-hdu-4712-Hamming Distance
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4712 题目大意: 求n个20位0.1二进制串中,两两抑或最少的1的个数. 解题思路: 两种解法: 1 ...
- 基于visual Studio2013解决面试题之0808寻找中间数
题目
- Linux下可执行程序调试信息的分离及release程序的调试
前两天在群里看到在讨论如何把debug版中的符号表加到release版本中,觉得这个非常有用,所以学习一下. 使用的工具是objcopy. 如果要生成单独的调试信息文件,命令如下: objcopy ...
- SQL窗体函數一例
需求: MSSQL,列出服務實例中全部數據庫的例如以下信息: 數據庫ID.數據庫名.創建日期.數據文件類型.數據文件大小.數據庫總大小.文件所在路徑. 寫法(後面的百分比為所花時間占比): -- 连接 ...
- Canvas上绘制几何图形
重要的类自定义View组件要重写View组件的onDraw(Canvase)方法,接下来是在该 Canvas上绘制大量的几何图形,点.直线.弧.圆.椭圆.文字.矩形.多边形.曲线.圆角矩形,等各种形状 ...
- html,JavaScript调用winfrom方法
---恢复内容开始--- 目的: 在动画上面添加点击事件,通过JavaScript调用winfrom方法 1.创建一个页面 using System; using System.Collections ...
- 一些Windows API导致的Crash以及使用问题总结
RegQueryValueEx gethostbyname/getaddrinfo _localtime64 FindFirstFile/FindNextFile VerQueryValue Crea ...
- STL algorithm算法is_permutation(27)
is_permutation原型: std::is_permutation equality (1) template <class ForwardIterator1, class Forwar ...
- 美国企业人事喜欢考的3道.Net经典笔试题
1..求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m 答: int Num = this.TextBox1.Text.ToString() ; int Sum = 0 ; ...
- 基于visual Studio2013解决面试题之0210树的最远距离
题目