比较2个不同的条件和相同的想法

时间:2016-05-19 10:29:30

标签: php php-5.3

我有一个问题:$value !=''!isset($value)之间有什么区别?

3 个答案:

答案 0 :(得分:3)

$value != ''!isset($value)之间实际使用的主要区别在于您可以像这样使用isset()

if(!isset($value)){
    echo '$value is not declared or is equal to null';
}

如果$value未实际设置,则您不会收到isset()的通知。如果你做了这样的事情:

if($value != ''){
    echo $value." is not equal to nothing"; 
}

如果未设置$value,则会在PHP中发出通知,说明尚未声明$value

需要注意的是isset()将检查变量是否已声明,但不会检查它是否等于''

但是empty()呢?

这里的难题的另一部分是empty(),它将检查变量是否被声明并且不等于''。你可以这样做:

if(!empty($value)){
    echo 'We know that $value is declared and not equal to nothing.';
}

这与执行此操作相同:

if(isset($value) && $value != ''){
    echo 'We know that $value is declared and not equal to nothing.';
}

进一步阅读:

isset() - PHP docs

empty() - PHP docs

isset,空检查 - similar question

Why check both isset and empty?

所有这些示例都适用于PHP 5.3 +

答案 1 :(得分:0)

  

isset()会告诉您变量的存在,而不是NULL

     

empty()可以告诉你两者,变量&的存在变量的值。

实施例。

$var1  = "";
echo isset($var1);

输出: - true

因此要检查变量是否已设置,然后使用isset(),如果要检查变量的值是否为空/空,请使用empty()

$value != ''表示您正在检查$value是否不是空字符串。

!isset($value)确定变量$value是否未设置且NULL

阅读这些链接,了解有关isset&的更多信息。 empty

What's the difference between 'isset()' and '!empty()' in PHP?

http://php.net/manual/en/function.isset.php

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

答案 2 :(得分:0)

$variable != ''只是根据空字符串值检查变量(或因为'' == null而为null),如果未定义变量,则会显示通知。

!isset($variable)检查变量是否已定义,如果未返回true,则不会显示错误/通知。

但请注意,即使定义了变量,isset也可能返回false

$variable = null;
var_dump(isset($variable));  // prints false
当前范围内的

To check if variable is truly defined,将'array_key_exists'与'get_defined_vars'一起使用

$variable = null;
var_dump(array_key_exists('value', get_defined_vars()));  // prints true