Heim > php教程 > php手册 > php 检测一个变量是否设置时,empty()能代替isset()吗?

php 检测一个变量是否设置时,empty()能代替isset()吗?

WBOY
Freigeben: 2016-06-13 10:58:23
Original
1153 Leute haben es durchsucht

我们先来复习一下empty和isset

 

empty — 检查一个变量是否为空

 

""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE

 

isset — 检测变量是否设置

 

 

检测变量是否设置,并且不是 NULL。 即:变量未设置,返回false; 变量为NULL,返回false

 

php手册解释的比较清楚了,可如果一个变量未设置时,empty返回什么结果呢?

 

 

[php] 

var_dump(empty($undefined));  

 

var_dump(empty($undefined));结果是:bool(true) 

 

可见empty也可以起到检测变量是否设置的目的。那么该不该使用empty代替isset呢?

 

我觉得如果仅仅是判断一个变量存不存在,那么该使用isset,因为isset的含义很清晰,就是干这个用的,也利于对代码的阅读。

 

当既要判断变量存在,又有判断变量不为0,'',空数组等情况,可以用

 

[php] 

if(!empty($var))  代替   if(isset($var) && !empty($var))  

 

if(!empty($var))  代替   if(isset($var) && !empty($var))当要判断一个变量是否是NULL时,就必然不能使用isset了。 

 

 

 

 

下面再来引申一些内容:

 

isset和empty的性能?

 

其实isset和empty的性能都很好,差别不大。还要说一点是它们都是语句,不是函数,想要具体看一下这方面的内容的,可以看鸟哥的这篇文章《isset和is_null的区别》

 

语句是不能被可变函数调用的,此外,在isset和empty里是不能接受函数的返回值当做参数的,比如这样是不行的

 

 

[php] 

empty(intval('3'));  

//Fatal error: Can't use function return value in write context  

 

empty(intval('3'));

//Fatal error: Can't use function return value in write context

但是,目前最新的PHP5.5的发布支持了这一特性,即能够在empty中使用任意表达式:

 

 

[php] 

function always_false() {  

    return false;  

}  

  

if (empty(always_false())) {  

    echo "This will be printed.\n";  

}  

 

function always_false() {

    return false;

}

 

if (empty(always_false())) {

    echo "This will be printed.\n";

}

将输出:  

 

This will be printed.

 

 

 

 

 

 

 

 

 

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage