资讯专栏INFORMATION COLUMN

PHP中判断变量为空的五种方法

wing324 / 566人阅读

摘要:判断变量为空,在许多场合都会用到,但也有很多新手仍会弄错。这里笔者整理了个判断变量为空的方法,大家可以根据实际情况选择使用。

判断变量为空,在许多场合都会用到,但也有很多新手仍会弄错。这里笔者整理了5个判断变量为空的方法,大家可以根据实际情况选择使用。

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 已经被初始化

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 为空" . "";

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

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

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

说明:当变量被赋值为”null”时,同时变量的类型也是”null”时,检测结果为true

注意1:在判断为”null”上,全等于和is_null的作用相同

注意2:变量未初始化时,程序将会报错

总结:

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″等值的干扰。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22737.html

相关文章

  • this五种指法

    摘要:中只有的作用域是动态作用域的五种绑定初学时,会想当然认为遵循某一条规律,就像物理学那样,然而并不是。的绑定分为五种情况,这五种情况之间毫无规律可言。以至指向更加扑朔迷离。 this 到底指向哪里 以下如果没提及,则为严格模式。 js中作用域有两种: 词法作用域 动态作用域 词法作用域 词法作用域指在书写代码时就被确定的作用域。看如下代码 var value = 1; ...

    Caizhenhao 评论0 收藏0
  • java线程池的原理学习(三)

    摘要:接上文线程池的原理学习二深入剖析线程池的五种状态类中将线程状态分为了以下五种可以接受新任务并且处理进入队列中的任务不接受新任务,但是仍然执行队列中的任务不接受新任务也不执行队列中的任务所有任务中止,队列为空,进入该状态下的任务会执行方法方法 接上文:java线程池的原理学习(二) ThreadPoolExecutor深入剖析 线程池的五种状态 ThreadPoolExecutor 类中...

    mgckid 评论0 收藏0
  • 转:从框架看PHP五种境界及各自的薪资待遇

    摘要:语言行为及特征状态看不懂任何英语技术,英语文档,凡事没有培训部在搞的,只有英文文档的东西国内一律没大公司在用,都非主流,排斥英文文档和新技术,以及各种超出他学习能力范围的技术。 在撰写此文前首先必须申明的是本人不鄙视任何一种框架,也无意于挑起PHP框架间的战争,更没有贬低某个框架使用者的用意,本文纯粹个人的看法。你可以认为我无知也好,或者装逼也好,请不要试着在任何情况下,随便发起言语的...

    Godtoy 评论0 收藏0
  • js数据结构和算法(三)二叉树

    摘要:同样结点树的二叉树,完全二叉树的深度最小。二叉树每个结点最多有两个孩子,所以为它设计一个数据域和两个指针域是比较自然的想法,我们称这样的链表叫做二叉链表。 二叉树的概念 二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 showImg(https://seg...

    DesGemini 评论0 收藏0
  • [PHP]一张图片彻底弄清isset empty函数区别!!!

    摘要:如果还有人问你两者区别,马上甩出这种图有兴趣可以往下阅读,官方手册给出的例子手册这是一张将区别的表格,从表格中我们可以发现返回值等同返回值等同。 简单谈一下isset和empty的区别? 如果你是在面试,碰巧面试官提了这个问题。你可以这样回答: 如果变量值为0、空字符串、空数组等等,empty认为它是空的,而isset认为它不是空的。 如果变量不存在,isset和empty都认为它是...

    venmos 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<