2013-12-14 64 views
19

我不明白isset()!empty()之间的区别。PHP中'isset()'和'!empty()'有什么区别?

因为如果一个变量已经设置,是不是不是空的一样?

+3

你读过两者的手册? [Here](http://www.php.net/isset)和[here](http://www.php.net/empty) – George

+2

请阅读http://kunststube.net/isset/此外。谢谢@deceze – hek2mgl

+0

'isset();'检查变量是否字面设置,因为变量实际上指向某个值。 'empty();'检查变量指向的值是否包含任何内容。 – AlphaDelta

回答

30

ISSET检查变量是否已设置。换句话说,它检查变量是否为除NULL以外的值或未赋值。如果变量存在并且具有非NULL值,则返回返回TRUE。这意味着分配了“”,0,“0”或FALSE的变量已设置,因此TRUEISSET

EMPTY检查变量是否为空。 Empty被解释为:“”(一个空字符串),0(整数),0.0(浮点数),“0”(字符串),NULL,FALSE,array()(一个空数组)和“$ var;” (变量声明,但没有一类的值。

欲了解更多信息,请参阅this article

+3

”“不是空的。 ““ 是空的。 – EresDev

+1

您可以举一个例子,其中isset为true,但空为false。还有一个例子,isset是假的,但是空的是真的? – Unbreakable

0

isset - 确定是否设置了变量并且不是NULL。

!empty - 确定变量是否为空。

+0

'!isset(NULL)===空(NULL)'。 – hek2mgl

+3

那么如何定义“空”?没有足够的解释。 “ – deceze

0

Isset回报如果变量未设置,则为false;如果变量设置为非空,则返回true。

!empty返回true如果变量已设置且不为空Em pty字符串,空数组,“0”,0和false被定义为空。

0

还有一句话。 empty()检查变量是否也存在。即如果我们对未声明的变量执行empty(),我们不会收到错误,empty()返回'true'。因此,如果接下来我们需要检查变量是否为空,我们可能会避免isset()

所以

isset($var) && !empty($var) 

将等于

!empty($var)