***PHP中判断变量为空的几种方法
总结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中判断变量为空的几种方法相关推荐
- python判断列表为空的三种方法
python中判断列表为空 判断列表为空是一个非常基础的问题.但是也有很多写法. 方法1:len() list = [] if len(list) == 0:print('list is empty' ...
- C# 判断字符串为空的4种方法及效率
1.str.Length == 0 使用 str.Length == 0,在三种方法中效率是最高的,但容易产生异常.当字符串为空的时候就会产生异常,如 string str; 或者 string st ...
- c#中判断对象为空的几种方式(字符串等)
(1)先了解几个与空类型相关的关键字和对象 Null : 关键字表示不引用任何对象的空引用,它是所有引用类型变量的默认值,在2.0版本之前也就只有引用变量类型可以为null,如(string a=nu ...
- Python判断变量的数据类型的两种方法
2019独角兽企业重金招聘Python工程师标准>>> 1.isinstance(变量名,类型) def varargsql(self, sql, *args):if isinsta ...
- JS判断变量是不是数组的5种方法
方式一:isArray var arr=[1,2,3]; console.log(Array.isArray(arr)) 方式二:instanceof var arr=[1,2,3]; console ...
- java判断集合为空_Java中判断集合类为空的方法
*****需要引入Spring的核心Jar包***** 工具类: org.springframework.util.CollectionUtils 方法: public static boolean ...
- java中map嵌套map_java中遍历MAP,嵌套map的几种方法
java中遍历MAP的几种方法 Map map=new HashMap(); map.put("username", "qq"); map.put(" ...
- python中none算变量吗_在python中对变量判断是否为None的三种方法总结
三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...
- Js中判断变量存不存在的问题
前面写过jquery对象存在与否的判断.现在谈下Js中判断变量存不存在的问题. 如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行.注意,这种判断只要变量申明过, ...
最新文章
- 关于多线程中抛异常的这个面试题我再说最后一次!
- 测试使用2mH的工字型电感在接收150kHz导航信号中性能
- Service Worker 概念简介
- 大二暑假周进度报告(五)
- .NET平台开源项目速览-最快的对象映射组件Tiny Mapper之项目实践
- 【题解】洛谷P4145 花神游历各国(线段树)
- 文件中有一组整数,要求排序后输出到另一个文件中
- EasyUi之书籍功能(CRUD)
- 论SVGA直播礼物特效对直播平台的重要性
- 条码软件如何制作SCC-14条形码
- 复现awvs——CVE-2020-1938(CNVD-2020-10487)tomcat ajp 文件包含漏洞
- k-nearest neighbors algorithm - k 最近邻算法
- vue使用高德地图aMap实现轨迹动画查询显示
- linux设置ps2鼠标,linux环境变量设置 (PS1,PS2)
- 全志V853开发板--构建编译
- 人工智能数学基础--概率与统计2:排列组合的表示方法、二项式系数及斯特林近似
- Unity关于画板工具开发
- 风控是如何运用手机运营商数据
- React+Nginx 二级域名指向配置
- Vue 开发一个简略版的飞机大战小游戏