empty(), is_null(), isset()真值表(区别)

 

  我们先来看看这3个函数的功能描述 www.111cn.net

  isset 判断变量是否已存在,如果变量存在则返回 TRUE,否则返回 FALSE。

  empty 判断变量是否为空,如果变量是非空 或非零 的值,则 empty() 返回 FALSE。换句话说,"" 、0 、"0" 、NULL 、FALSE 、array() 、var $var; 以及没有任何属性的对象 都将被认为是空的,如果变量为空,则返回 TRUE。

  is_null 判断变量是否为NULL

  怎么样,一般的都是这种解释,但这种解释已经很让人迷糊了,下面结合具体的例子来分析吧!

  从中我们可以发现只要变量是""或者0,或者是false和null,只要是这些值empty都会返回true。

  isset只是判断变量是否存在,只要你这个变量不是null或未赋值,返回结果都是true。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("")并不等同于 PHP 的 NULL 常数。

  而is_null正好是isset的反结果,我们可以把它看成是!isset,是isset的一个逆操作。

  从以上的例子中,我们也可以得出下面这几个结论(以后编程中会经常用到的哦):

  假设 $var 是任何type

  当 empty($var) 为 true 时,(bool)($var) 为 false 。反之亦然。

  当 is_null($var) 为 true 时,isset($var) 为 false 。反之亦然。

  例如:

  $i=$j+1;

  这里的is_null($j)为true(可以理解为因为 isset($j)为false,因为没有事先声明 $j 这个变量)

  另外需要注意的两点是:

  (1)empty() 只检测变量,检测任何非变量的东西都将导致解析错误 。换句话说,后边的语句将不会起作用: empty(addslashes($name))。

  (2)isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。

  概括总结isset,empty,is_null区别

  刚才介绍的:检查变量,以及参数类型,这个是这3个函数不同之处的基础,也是最容易被忽视的。看到网上有很多对这个3个函数进行比较文章。很少涉及这些。下面我要说的,是在都检查已存在变量情况下,不同之处。

 代码如下  

<?php 
$a=100; 
$b=""; 
$c=null; 
//isset检查 
echo "isset","$a=$a",isset($a)?"define":"www.111cN.net undefine","rn"; 
echo "isset","$b=$b",isset($b)?"define":"undefine","rn"; 
echo "isset","$c=$c",isset($c)?"define":"undefine","rn"; 
unset($b); 
echo "isset","$b",isset($b)?"define":"undefine","rn"; 
$b=0; 
echo "rnrn"; 
  
//empty检查 
echo "empty","$a=$a",!empty($a)?"no empty":"empty","rn"; 
echo "empty","$b=$b",!empty($b)?"no empty":"empty","rn"; 
echo "empty","$c=$c",!empty($c)?"no empty":"empty","rn"; 
unset($b); 
echo "empty","$b",!empty($b)?"no empty":"empty","rn"; 
$b=0; 
echo "rnrn"; 
  
//is_null检查 
echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn"; 
echo "is_null","$b=$b",!is_null($b)?"no null":"null","rn"; 
echo "is_null","$c=$c",!is_null($c)?"no null":"null","rn"; 
unset($b); 
echo "is_null","$b",is_null($b)?"no null":"null","rn";

  通过上面这个简单测试,我们可以大体知道,当一个变量存在情况下:isset,empty,is_null检测,得到值情况了。上面没有举例更多变量。其实测试发现:

  empty

  如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var、未定义; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

  isset

  如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。

  is_null

  检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】.

http://www.3lian.com/edu/2014/01-06/121867.html

 
 

php中empty(), is_null(), isset()函数区别(转)的更多相关文章

  1. php中empty(), is_null(), isset()函数区别

    empty(), is_null(), isset()真值表(区别) 我们先来看看这3个函数的功能描述 www.111cn.net isset 判断变量是否已存在,如果变量存在则返回 TRUE,否则返 ...

  2. php中empty和isset函数

    函数使用格式 empty bool empty ( mixed $var ) 判断变量是否为空. isset bool isset ( mixed $var [ , mixed $... ] ) 判断 ...

  3. ***PHP中empty()和isset()的区别

    对于初学php的人来说,empty()和和isset()用法的区别是很难搞清楚的,他们的用法的差别不仔细去琢磨的话确实很难弄清楚. 先说一下他们的共同点: 都可以判定一个变量是否为空: 都返回bool ...

  4. php - empty() is_null() isset()的区别

    empty():当变量存在,并且是一个非空非零的值时,返回 FALSE,否则返回 TRUE. is_null():如果指定变量为 NULL,则返回 TRUE,否则返回 FALSE. isset():如 ...

  5. php中empty和isset的区别

    比如: $_POST[ 'test']= ' ';那么: isset($_POST[ 'test']) ===> true; empty($_POST[ 'test']) ===> tru ...

  6. empty(), is_null(), isset()真值表(区别)

  7. [PHP源码阅读]empty和isset函数

    近日被问到PHP中empty和isset函数时怎么判断变量的,刚开始我是一脸懵逼的,因为我自己也只是一知半解,为了弄懂其真正的原理,赶紧翻开源码研究研究.经过分析可发现两个函数调用的都是同一个函数,因 ...

  8. PHP中empty、isset和is_null的使用区别

    关于PHP中empty().isset() 和 is_null() 这三个函数的区别,之前记得专门总结过,上次又被问到,网上已经很多,就用几个例子来说明: 测试用例选取: <?php $a;$b ...

  9. 一张表搞清楚php is_null、empty、isset的区别

    isset 判断变量是否已存在 empty 判断变量是否为空或为0 is_null 判断变量是否为NULL 变量 empty is_null isset $a="" true fa ...

随机推荐

  1. Linux的XServer

    Moblin Core是在Gnome Mobile的平台上建立.我以前玩Linux,提交的都和图像没有关系,连Xwindows都不用启动,开机后直接进入文本命令行,所以这方面了解得很少,需要学习一下, ...

  2. 【Head First Servlets and JSP】笔记17:JSP所生成的servlet相关问题

    1.容器根据你所写的JSP生成一个类, /* * Generated by the Jasper component of Apache Tomcat * Version: Apache Tomcat ...

  3. PHP面向对象之对象和引用

    在PHP中对象类型和简单变量类型表现可以说是大相径庭,很多数据类型都要可以在写时进行复制,如当写代码$a=$b时,两个变量因为赋予相同的值而告终.所以需要注意的是,这种情况用在对象时就会完全不同了. ...

  4. python异步库

    https://github.com/aio-libs  异步库

  5. JSP--内置对象&动作标签介绍

    1.JSP中常用的9大内置对象? 内置对象:在JSP页面中能直接使用的对象就是JSP内置对象,事实上,JSP底层就是一个java类,可以在JSP中直接使用的,必然存在JSP翻译后的java类 下面简单 ...

  6. Centos6.5安装apache

    1:下载 官网: http://www.apache.org/ 官网下载很慢,从别的地方下载 2:安装 tar -zxvf /usr/local/httpd-2.2.9.tar.gz cd /usr/ ...

  7. Spring Cloud Stream消息总线

    Springcloud 里面对于MQ的整合一个是前一篇的消息总线一个是本文介绍的消息驱动 大体要学习这么几个知识点: 课题:SpringCloud消息驱动Stream1.什么是SpringCloud消 ...

  8. nginx 反向代理配置之---可配置多域名请求

    配置文件如下: server { listen 80; server_name ngin服务器所对应的的域名; error_log /data/logs/nginx/mainsite.error.lo ...

  9. 增强织梦DedeCMS“更新系统缓存”清理沉余缓存的功能

    我们使用织梦DedeCMS系统有很长一段时间后,不间断的在后台更新系统缓存的时候,有些缓存文件夹及缓存文件没有被清理,导致日积月累的垃圾缓存文件越来越多,可以以百千万计算,现在增强更新系统缓存功能清理 ...

  10. URL重写技术总结

    URL重写技术总结 概要:什么是url重写? URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.比如浏览器发来请求 hostname/101.html ,服务器自动将这个请 ...