总结PHP中,"NULL" 和 "空" 是2个概念。

isset  主要用来判断变量是否被初始化过
empty  可以将值为 "假"、"空"、"0"、"NULL"、"未初始化" 的变量都判断为TRUE
is_null  仅把值为 "NULL" 的变量判断为TRUE
var == null  把值为 "假"、"空"、"0"、"NULL" 的变量都判断为TRUE
var === null  仅把值为 "NULL" 的变量判断为TRUE

  所以我们在判断一个变量是否真正为"NULL"时,大多使用 is_null,从而避免"false"、"0"等值的干扰。

1. isset功能:判断变量是否被初始化

  说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过
注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_exists高4倍左右

  

  复制代码 代码如下:

  $a = '';
$a['c'] = '';
if (!isset($a)) echo '$a 未被初始化' . "";
if (!isset($b)) echo '$b 未被初始化' . "";
if (isset($a['c'])) echo '$a 已经被初始化' . "";
// 显示结果为
// $b 未被初始化
// $a 已经被初始化

  2. empty功能:检测变量是否为"空"

  说明:任何一个未初始化的变量、值为 0 或 false 或 空字符串"" 或 null的变量、空数组、没有任何属性的对象,都将判断为empty==true
注意1:未初始化的变量也能被empty检测为"空"
注意2:empty只能检测变量,而不能检测语句

  

  复制代码 代码如下:

  $a = 0;
$b = '';
$c = array();
if (empty($a)) echo '$a 为空' . "";
if (empty($b)) echo '$b 为空' . "";
if (empty($c)) echo '$c 为空' . "";
if (empty($d)) echo '$d 为空' . "";

  3. var == null功能:判断变量是否为"空"

  说明:值为 0 或 false 或 空字符串"" 或 null的变量、空数组、都将判断为 null
注意:与empty的显著不同就是:变量未初始化时 var == null 将会报错。

  

  复制代码 代码如下:

  $a = 0;
$b = array();
if ($a == null) echo '$a 为空' . "";
if ($b == null) echo '$b 为空' . "";
if ($c == null) echo '$b 为空' . "";
// 显示结果为
// $a 为空
// $b 为空
// Undefined variable: c

  4. is_null功能:检测变量是否为"null"

  说明:当变量被赋值为"null"时,检测结果为true
注意1:null不区分大小写:$a = null; $a = NULL 没有任何区别
注意2:仅在变量的值为"null"时,检测结果才为true,0、空字符串、false、空数组都检测为false
注意3:变量未初始化时,程序将会报错

  

  复制代码 代码如下:

  $a = null;
$b = false;
if (is_null($a)) echo '$a 为NULL' . "";
if (is_null($b)) echo '$b 为NULL' . "";
if (is_null($c)) echo '$c 为NULL' . "";
// 显示结果为
// $a 为NULL
// Undefined variable: c

  5. var === null功能:检测变量是否为"null",同时变量的类型也必须是"null"

  说明:当变量被赋值为"null"时,同时变量的类型也是"null"时,检测结果为true
注意1:在判断为"null"上,全等于和is_null的作用相同
注意2:变量未初始化时,程序将会报错

------------------------------------------------------------------------------------------------

从数据库中取出值后判断是否为空,这个看起来很简单,只要和null比较一下就可以了,其实不然,

if($obj==null){
}

这样写会报错的:Notice: Trying to get property of non-object problem,

查了一下发现需要使用下面的写法

if (isset($obj)) {
echo "This var is set set so I will print.";
}

这个isset是做什么的呢?

isset函数是检测变量是否设置。

格式:bool isset ( mixed var [, mixed var [, ...]] )

返回值:

若变量不存在则返回 FALSE 
若变量存在且其值为NULL,也返回 FALSE 
若变量存在且值不为NULL,则返回 TURE 
同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE 
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节(”\0″)并不等同于 PHP 的 NULL 常数。

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

看来刚才我那边的判断所出的问题,就是因为这个“是一个 NULL 字节(”\0″)并不等同于 PHP 的 NULL 常数”。

转载于:https://www.cnblogs.com/kenshinobiy/p/4306751.html

***PHP中判断变量为空的几种方法相关推荐

  1. python判断列表为空的三种方法

    python中判断列表为空 判断列表为空是一个非常基础的问题.但是也有很多写法. 方法1:len() list = [] if len(list) == 0:print('list is empty' ...

  2. C# 判断字符串为空的4种方法及效率

    1.str.Length == 0 使用 str.Length == 0,在三种方法中效率是最高的,但容易产生异常.当字符串为空的时候就会产生异常,如 string str; 或者 string st ...

  3. c#中判断对象为空的几种方式(字符串等)

    (1)先了解几个与空类型相关的关键字和对象 Null : 关键字表示不引用任何对象的空引用,它是所有引用类型变量的默认值,在2.0版本之前也就只有引用变量类型可以为null,如(string a=nu ...

  4. Python判断变量的数据类型的两种方法

    2019独角兽企业重金招聘Python工程师标准>>> 1.isinstance(变量名,类型) def varargsql(self, sql, *args):if isinsta ...

  5. JS判断变量是不是数组的5种方法

    方式一:isArray var arr=[1,2,3]; console.log(Array.isArray(arr)) 方式二:instanceof var arr=[1,2,3]; console ...

  6. java判断集合为空_Java中判断集合类为空的方法

    *****需要引入Spring的核心Jar包***** 工具类: org.springframework.util.CollectionUtils 方法: public static boolean ...

  7. java中map嵌套map_java中遍历MAP,嵌套map的几种方法

    java中遍历MAP的几种方法 Map map=new HashMap(); map.put("username", "qq"); map.put(" ...

  8. python中none算变量吗_在python中对变量判断是否为None的三种方法总结

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

  9. Js中判断变量存不存在的问题

    前面写过jquery对象存在与否的判断.现在谈下Js中判断变量存不存在的问题. 如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行.注意,这种判断只要变量申明过, ...

最新文章

  1. 关于多线程中抛异常的这个面试题我再说最后一次!
  2. 测试使用2mH的工字型电感在接收150kHz导航信号中性能
  3. Service Worker 概念简介
  4. 大二暑假周进度报告(五)
  5. .NET平台开源项目速览-最快的对象映射组件Tiny Mapper之项目实践
  6. 【题解】洛谷P4145 花神游历各国(线段树)
  7. 文件中有一组整数,要求排序后输出到另一个文件中
  8. EasyUi之书籍功能(CRUD)
  9. 论SVGA直播礼物特效对直播平台的重要性
  10. 条码软件如何制作SCC-14条形码
  11. 复现awvs——CVE-2020-1938(CNVD-2020-10487)tomcat ajp 文件包含漏洞
  12. k-nearest neighbors algorithm - k 最近邻算法
  13. vue使用高德地图aMap实现轨迹动画查询显示
  14. linux设置ps2鼠标,linux环境变量设置 (PS1,PS2)
  15. 全志V853开发板--构建编译
  16. 人工智能数学基础--概率与统计2:排列组合的表示方法、二项式系数及斯特林近似
  17. Unity关于画板工具开发
  18. 风控是如何运用手机运营商数据
  19. React+Nginx 二级域名指向配置
  20. Vue 开发一个简略版的飞机大战小游戏

热门文章

  1. Windows 脚本系列之四—映射网络盘脚本
  2. 华人“军火专家”——黄仁勋
  3. 2018/12/08 L1-042 日期格式化 Java
  4. 数学推导+纯Python实现机器学习算法:逻辑回归
  5. HDU 6354 Everything Has Changed(余弦定理)多校题解
  6. linux运维基础篇 unit14
  7. mysql索引与优化
  8. 查杀DeDe数据库后门 网站安全狗DeDe专杀工具
  9. 使用Python制作一个简单的刷博器
  10. Linux--线程编程