2

isset($var) == "Test"和 和有什么不一样isset($var) && $var == 'Test"

4

3 回答 3

2

第一个没有意义。如您所见,isset返回一个布尔值。所以isset($var) == "Test"正如我所说,根据字符串评估布尔值。

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

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

于 2013-02-08T06:50:53.533 回答
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() 返回trueor false,并且一个非空字符串与true结果 in相比true

所以最好使用该isset($var) && $var == "Test"变体,因为它可以满足您的期望。

于 2013-02-08T06:51:55.640 回答
1

isset()如果设置了变量,该函数将返回 true(布尔值)。现在,当您比较 boolean == "Test" 时,它是假的。因此,要检查您的变量是否已设置并具有 'Test' 的值,您应该使用isset($var) && $var == 'Test'. 但我不明白为什么你不应该做`$var == 'Test'。解释器会以这种方式抱怨未初始化的变量吗?

阅读以下内容,如果您不了解该功能的isset实际作用,请提出任何问题:http: //php.net/manual/en/function.isset.php

于 2013-02-08T06:50:56.140 回答