在PHP中'isset()'和'!empty()'有什么区别?

我不明白isset()!empty()之间的区别。

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

ISSET检查variables是否已被设置。 换句话说,它检查variables是否是除NULL之外的任何值或者没有赋值。 如果variables存在并且具有非NULL值,则ISSET返回TRUE 。 这意味着分配了“”,0,“0”或FALSE的variables被设置,因此ISSETTRUE

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

有关更多信息,请参阅此文章

来源:http://php.net/manual/en/types.comparisons.php这个页面显示了empty()is_null()isset()

图片显示在这里完整的比较

types比较表给出了关于这些操作符的所有问题的答案

http://php.net/manual/en/types.comparisons.php

isset – 确定是否设置了一个variables,而不是NULL。

!empty – 确定variables是否为空。

如果variables尚未设置,Isset返回false;如果variables已设置,则返回true;如果variables未设置,则返回true。

!empty如果variables已经设置而不是空的,则返回true。 空string,空数组,“0”,0和false被定义为空。

还有一点意见。 empty()检查variables是否也存在。 也就是说,如果我们对未声明的variables执行empty() ,我们不会收到错误, empty()返回“true”。 所以我们可以避免isset()如果接下来我们需要检查variables是否为空。

所以

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

将等于

 !empty($var)