***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 常数”。

时间: 2024-10-04 22:51:15

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

PHP中判断变量为空的几种方法小结

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

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

在程序开发过程中,少不了要处理字符串,并且常常要判断字符串是否为空,通常有哪些判断方法,以及不同方法的效率又怎么样? 在 C# 中,通常有三种判断字符串是否为空的方法,下面分别探讨. 1.str.Length == 0 使用 str.Length == 0,在三种方法中效率是最高的,但容易产生异常.当字符串为空的时候就会产生异常,如 string str; 或者 string str = null; if(str.Length == 0) //产生异常 此时,就会产生对象不能为空的异常. 如果事

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

(1)先了解几个与空类型相关的关键字和对象  Null : 关键字表示不引用任何对象的空引用,它是所有引用类型变量的默认值,在2.0版本之前也就只有引用变量类型可以为null,如(string a=null)但在c# 2.0版本之后,Net也引入了可以为Null的值类型,但变量在定义的时候方式有所不同,如:int ? a=null.详细看http://msdn.microsoft.com/zh-cn/library/1t3y8s4s.aspx.不在内存中开辟内存地址,可用于引用是否可用.  DB

JavaScript中判断变量类型最简洁的实现方法(#################################)

这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短.最简洁的实现方法,需要的朋友可以参考下 我们知道JavaScript提供了typeof运算符,因此最容易想到的是用typeof来判断是否是number类型. 复制代码代码如下: 1 2 3 function isNumber(obj) {     return typeof obj === 'number' } 这个函数对于整数和浮点数都没有问题,但对于NaN值也返回true这让

java中判断字符串是否相等有两种方法:

1.用“==”运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b="abc",那么a==b将返回true.这是因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以a和b指向的是同一个对象:再比如:String a=new String("abc");String b=new String("abc");那么a==b将返回false,因为a和b指向不同的对

shell 变量嵌套取值 ,判断变量为空

1.变量嵌套取值 bitrate1=100 numbers=1 eval echo \$bitrate${numbers} >tmpbit tmpbitrate=`cat tmpbit` 2.判断变量为空 if [ ! -n $bitrate ];then echo null;fi

php变量判断为空的几种方法

1.isset  主要用来判断变量是否被初始化过 注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_exists高4倍左右 2.empty  可以将值为 "假"."空"."0"."NULL"."未初始化" 的变量都判断为TRUE 3. is_null  仅把值为 "NULL" 的变量判断为TRUE 4.var == null  把值为 "假&q

Java 判断字符串是否为空的四种方法、优缺点与注意事项

以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法: if(s == null || s.length() <= 0);方法三: JavaSE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二. if(s == null || s.isEmpty()); 方法四:

QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)

QT中获取选中的radioButton的两种方法 QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast<QRadioButton*>(ui->BG->checkedButton()); 2 QString name = pbtn->objectName(); 3 if(!QString::compare(name, "rad