1.empty()

header("Content-type: text/html; charset=utf-8");
if(!empty($data)){ //empty() 未定义、NULL 、array()、""、 0 、"0" 、FALSE的时候返回TRUE,若变量已存在、非空字符串或者非零,则返回 FALSE 值
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = NULL;
if(!empty($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = array();
if(!empty($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if(!empty($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = ;
if(!empty($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if(!empty($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = FALSE;
if(!empty($data)){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = ;
if(!empty($data)){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = "";
if(!empty($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}

结果

0
0
0
0
0
0
0
1
1

  

2.isset()

if(isset($data)){ //isset() 若变量已存在、非空字符串或者非零 、array()、""、 0 、"0" 、FALSE的时候返回TRUE,若为NULL、未定义的时候返回FALSE值
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = NULL;
if(isset($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = array();
if(isset($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if(isset($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = ;
if(isset($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if(isset($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = FALSE;
if(isset($data)){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = ;
if(isset($data)){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = "";
if(isset($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}

结果

0
0
1
1
1
1
1
1
1

3.is_null(),与isset()相反。区别在于未定义的时候会报错Notice错误

if(is_null($data)){ // 若变量已存在、非空字符串或者非零 、array()、""、 0 、"0" 、FALSE的时候返回FALSE,若为NULL的时候返回TRUE值,未定义会报错
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = NULL;
if(is_null($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = array();
if(is_null($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if(is_null($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = ;
if(is_null($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if(is_null($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = FALSE;
if(is_null($data)){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = ;
if(is_null($data)){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = "";
if(is_null($data)){
echo "1<br/>";
}else{
echo "0<br/>";
}

结果

Notice: Undefined variable: data in D:\xampp\htdocs\t.php on line 3
1
1
0
0
0
0
0
0
0

4.==NULL

if($data==NULL){ //==NULL 若值为 0 或 false 或 空字符串"" 或 null的变量、空数组、都将判断为 null,"0"、1、"1"将判断为非NULL,未定义会报错
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = NULL;
if($data==NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = array();
if($data==NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if($data==NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = ;
if($data==NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = ""; // 非NULL
if($data==NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = FALSE;
if($data==NULL){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = ; // 非NULL
if($data==NULL){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = ""; //非NULL
if($data==NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}

结果

Notice: Undefined variable: data in D:\xampp\htdocs\t.php on line 5
1
1
1
1
1
0
1
0
0

5.===NULL 等同于is_null()

if($data===NULL){ //===NULL 若变量已存在、非空字符串或者非零 、array()、""、 0 、"0" 、FALSE的时候返回FALSE,若为NULL、未定义的时候返回TRUE值,未定义会报错
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = NULL;
if($data===NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = array();
if($data===NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if($data===NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = ;
if($data===NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = "";
if($data===NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}
$data = FALSE;
if($data===NULL){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = ;
if($data===NULL){
echo "1<br/>";
}else{
echo "0<br/>";
} $data = "";
if($data===NULL){
echo "1<br/>";
}else{
echo "0<br/>";
}

结果

Notice: Undefined variable: data in D:\xampp\htdocs\t.php on line 6
1
1
0
0
0
0
0
0
0

 总结:

PHP中,NULL 和 空 是2个概念。
isset 主要用来判断变量是否被初始化过 未定义 NULL都是未初始化
empty 可以将值为 假、空、0、NULL、未初始化 的变量都判断为TRUE
is_null 仅把值为 NULL 的变量判断为TRUE
var == null 把值为 假、空、0、NULL 的变量都判断为TRUE,字符串"0"除外
var === null 仅把值为 NULL 的变量判断为TRUE等同于is_null() 注意:在判断一个变量是否真正为”NULL”时,大多使用 is_null,从而避免 假、0等值的干扰。

PHP中的逻辑判断函数empty() isset() is_null() ==NULL ===NULL的更多相关文章

  1. 深入PHP empty(),isset(),is_null()

    PHP empty(),isset(),is_null()的实例测试.   有关 PHP编程 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资 ...

  2. empty,isset,is_null比较(差异与异同)

    做php开发时候,想必在使用:empty,isset,is_null  这几个函数时候,遇到一些问题.甚至给自己的程序带来一些安全隐患的bug.很多时候,对于isset,empty都认为差不多.因此开 ...

  3. php empty,isset,is_null判断比较(差异与异同)

    php empty,isset,is_null判断比较(差异与异同) 作者: 字体:[增加 减小] 类型:转载 做php开发时候,想必在使用:empty,isset,is_null 这几个函数时候,遇 ...

  4. php empty,isset,is_null比较(差异与异同)

    php empty,isset,is_null比较(差异与异同)  http://www.cnblogs.com/chengmo/archive/2010/10/18/1854258.html

  5. php empty isset is_null

    总是忘记这些变量的区别,参考下http://www.jb51.net/article/38020.htm,记录下 设置几个变量 <?php $a; $b = false; $c = ''; $d ...

  6. php----浅谈一下empty isset is_null的用处

    } }    {      }  {       } } }    {      }  {       } is_null():判断变量是否为null if ($a){} 那这个未声明变量会报noti ...

  7. php部分---include()与require()的区别、empty()与isset is_null的区别与用法详解

    include()与require()的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间.他们最根本的区别在于错误处理的方式不一样. 1.处理错误的方式: require()一个文件存在错误的话 ...

  8. php中is_null,empty,isset,unset 的区别详细介绍

    is_null, empty, isset, unset 我们先来看看这4个函数的描述. isset 判断变量是否已存在(配置)unset 把变量删除(释放)掉empty 判断变量是否为空is_nul ...

  9. PHP判断变量是否存在及函数isset() 、empty()与is_null的区别

    一.举例说明 A.如何判断一个变量是否定义? <?php // 假设不存在$test 变量 if (isset($test)) { echo '$test 已经set', '<br/> ...

随机推荐

  1. Android 中Json解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比

    介绍 移动互联网产品与服务器端通信的数据格式,如果没有特殊的需求的话,一般选择使用JSON格式,Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高 ...

  2. javascript练习题(2):变量作用域

    1. 外层变量在内部可以找到,反之找不到 以下看个案例: var a=10; function aaa(){ alert(a); } function bbb(){ var a=20; aaa(); ...

  3. 火车头采集器db3导出sql语句

    1.通过火狐 sqlite mananger工具,将.db3文件,导出为.sql文件2.右击表面content,属性:Export table 3.不要勾选 include create table. ...

  4. jsp <span>标签自动换行

    <span>你好43675373543786375425278687375434537diovfndlbnslvsdlbepsfqwo[ewsbnsdbonfdnb</span> ...

  5. iOS-沙盒路径

    iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.documents,tmp,app,Library.(NSHomeDirectory() ...

  6. 如何拿到半数面试公司Offer——我的Python求职之路(转载)

    从八月底开始找工作,短短的一星期多一些,面试了9家公司,拿到5份Offer,可能是因为我所面试的公司都是些创业性的公司吧,不过还是感触良多,因为学习Python的时间还很短,没想到还算比较容易的找到了 ...

  7. ViewGroup的事件分发机制

    我们用手指去触摸Android手机屏幕,就会产生一个触摸事件,但是这个触摸事件在底层是怎么分发的呢?这个我还真不知道,这里涉及到操作硬件 (手机屏幕)方面的知识,也就是Linux内核方面的知识,我也没 ...

  8. 假如数组接收到一个null,那么应该怎么循环输出。百度结果,都需要提前判断。否则出现空指针异常。。我还是想在数组中实现保存和输出null。

    假如数组接收到一个null,那么应该怎么循环输出.因为foreach与obj.length都会报错.null不是对象,foreach中不能赋值? sp页面forEach一个存放对象的集合,怎么判断其中 ...

  9. VBox自动启动websrv 并开机启动所有的虚拟机

    由于项目需要,在Ubuntu 16.04的Server版本中安装了一个virtualbox,并利用phpvirtualbox来管理虚拟机 需要在宿主机启动之后将所有的虚拟机也启动,因此用以下方式进行处 ...

  10. Golang的接口

    当一只鸟走路像鸭子,游泳像鸭子,叫起来也像鸭子,那么我们就认为它就是鸭子. Duck typing 的理念因此比喻得名. Golang 通过 interface 实现 duck typing. Eff ...