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. 【leetcode刷题笔记】Interleaving String

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...

  2. point-to-point(点对点) 网口

    点对点连接是两个系统或进程之间的专用通信链路.想象一下直接连接两个系统的一条线路.两个系统独占此线路进行通信.点对点通信的对立面是广播,在广播通信中,一个系统可以向多个系统传输. 点对点通信在OSI协 ...

  3. Apache的order、allow、deny

    Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权. 所以,最常用的是:Or ...

  4. Go 模板语法

    Sprig the useful template functions for Go templates (http://masterminds.github.io/sprig/) Github -  ...

  5. MongoDB快速入门(六)- 更新文档

    更新文档 MongoDB的update()和save()方法用于更新文档到一个集合. update()方法将现有的文档中的值更新,而save()方法使用传递到save()方法的文档替换现有的文档. M ...

  6. springmvc注解基本入门

    简单介绍使用springmvc注解的基本流程. 1.在web.xml中配置DispatcherServlet <?xml version="1.0" encoding=&qu ...

  7. jQuery计时器插件

    /** * 定义一个jQuery计时插件,实现记录计时开始时间.结束时间,总共耗时的功能 * @param $ * * @author Ivan 2862099249@qq.com * @date 2 ...

  8. ML 线性回归Linear Regression

    线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...

  9. 直播P2P技术3-伙伴节点质量评估及子流订阅

    以上模型,暂且称之为W-P2P吧.

  10. ROS配置C++14环境

    ROS配置C++11环境 打开Terminal, sudo vim /opt/ros/<yourversion>/share/catkin/cmake/toplevel.cmake 比如: ...