isset($ var)==“Test”和isset($ var)&&的区别是什么? $ var =='测试'

时间:2013-02-08 06:41:43

标签: php isset

isset($var) == "Test"isset($var) && $var == 'Test"之间有什么区别?

3 个答案:

答案 0 :(得分:2)

第一个毫无意义。如您所见,isset返回一个布尔值。所以我所说的isset($var) == "Test"会对一个字符串计算一个bool。

评估isset($var) && $var == 'Test' PHP首先检查变量$ var是否已定义,然后该值是否等于字符串'test'。

只调用$var == 'Test而不确保它已设置将导致'未定义变量'通知。如果您不确定并且不想要嘈杂的日志,那么您可以使用isset进行检查。

答案 1 :(得分:2)

这是一个简短的例子:

$var = "Chuck Test";

var_dump(isset($var)); // bool(true)
var_dump(isset($undefined)); // bool(false)

var_dump(isset($var) == "Chuck Test"); // bool(true)
var_dump(isset($var) && $var == "Chuck Test"); // bool(true)
var_dump(isset($undefined) == "Chuck Test"); // bool(false)
var_dump(isset($undefined) && $undefined == "Chuck Test"); // bool(false)

看起来它们是等价的,但它们不是:

var_dump(isset($var) == "Chuck Testa"); // bool(true) !!!
var_dump(isset($var) && $var == "Chuck Testa"); // bool(false)

因为isset()返回truefalse,与true相比非空字符串会导致true

因此,最好使用isset($var) && $var == "Test"变体,因为它可以达到预期效果。

答案 2 :(得分:1)

如果设置了变量,函数isset()将返回true(布尔值)。现在当你比较一个布尔值==“测试”时,它就是假的。因此,要检查您的变量是否已设置且值是否为“测试”,您应使用isset($var) && $var == 'Test'。但我不明白为什么你不应该做`$ var =='测试'。翻译是否以这种方式抱怨未初始化的变量?

如果您不理解isset函数实际执行的操作,请阅读以下内容,提出任何问题: http://php.net/manual/en/function.isset.php