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.111cn.net/phper/php/56681.htm

转载于:https://www.cnblogs.com/alibai/p/3508198.html

php中empty(), is_null(), isset()函数区别相关推荐

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

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

  2. PHP中empty,is_null,isset的区别

    isset 判断变量是否已存在,如果变量存在则返回 TRUE,否则返回 FALSE. empty 判断变量是否为空,如果变量是非空 或非零 的值,则 empty() 返回 FALSE.换句话说,&qu ...

  3. PHP中empty,is_null,isset中的异同和功能

    empty -- 检查一个变量是否为空 bool empty ( mixed var ) 如果 var 是非空或非零的值,则 empty() 返回 FALSE .换句话说,"" . ...

  4. php中empty与isset的区别,再谈php中empty与isset区别详解

    empty与isset在php中一个是为空,另一个判断是是否为一个存在的变量了,下面小编来给各位同学介绍php中empty与isset区别,欢迎各位同学进入参考. empty是判断变量值是非空或非零的 ...

  5. PHP中 empty() 和 isset() 的区别

    区别: empty() 函数用于检查一个变量是否为空.当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在.如果变量不存在的话,empty()并不会产生警告. isset() 函数用 ...

  6. PHP中empty()和isset()的区别

    转载地址:http://www.2cto.com/kf/201510/445682.html 1.empty函数 用途:检测变量是否为空 判断:如果 var 是非空或非零的值,则 empty() 返回 ...

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

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

  8. php is_null、empty、isset的区别

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

  9. php empty 包含 isset,phpempty php empty和isset的区别

    在使用 php 编写页面程序时,经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题 ...

最新文章

  1. Redis初学:4(Redis的常用命令)
  2. React Nativi 参考文章
  3. hdu1.3.5 排列2
  4. python判断哪个数最小_怎么用python比较三个数大小
  5. python实现三叉树_使用python代码实现三叉搜索树高效率”自动输入提示”功能
  6. phpAdmin修改密码后拒绝访问
  7. vue 安装php,vue中使用openinstall
  8. python实现注册登录检验系统的源代码_Django自带的用户验证系统实现
  9. Java if/else switchswitch
  10. 51单片机流水灯程序
  11. Luogu 3174 [HAOI2009]毛毛虫
  12. Faster R-CNN论文翻译——中英文对照
  13. 重学JavaWeb —— JSP,简单全面一发入魂
  14. matlab读取视频VideoRead用法
  15. 【springboot maven 本地包依赖】
  16. <12>springboot集成thymeleaf模板引擎
  17. [转] volatile关键字解析
  18. Java函数式编程(Lambda表达式、Stream流用法)
  19. 独家预测:新浪博客将成为博客市场的“擎天一柱”
  20. android 6.1 换字体,换炫字体管家app

热门文章

  1. 记录:SqlParamater要点小结
  2. Michael-Scott非阻塞队列(lock-free)算法的C实现
  3. 文本框灰色文字提示,鼠标点击文字消失
  4. C# Linq获取两个List或数组的差集交集
  5. rails采用MongoDB感觉相当不错!
  6. Fabric 代码发布
  7. 在做TLS/SSL时报错
  8. base64的php文件上传,PHP传统文件上传和Base64位文件上传
  9. python多进程参考代码
  10. 首次公开开源PolarDB的总体结构设计和企业级特性