isset($var) == "Test"
和 和有什么不一样isset($var) && $var == 'Test"
?
3 回答
第一个没有意义。如您所见,isset
返回一个布尔值。所以isset($var) == "Test"
正如我所说,根据字符串评估布尔值。
在求值isset($var) && $var == 'Test'
过程中,PHP 首先检查变量 $var 是否已定义,然后检查该值是否等于字符串 'test'。
$var == 'Test
仅在未确保已设置的情况下调用将导致“未定义变量”通知。如果您不确定并且不想要嘈杂的日志,那么您可以使用 isset 进行检查。
这里有一个简短的例子:
$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() 返回true
or false
,并且一个非空字符串与true
结果 in相比true
。
所以最好使用该isset($var) && $var == "Test"
变体,因为它可以满足您的期望。
isset()
如果设置了变量,该函数将返回 true(布尔值)。现在,当您比较 boolean == "Test" 时,它是假的。因此,要检查您的变量是否已设置并具有 'Test' 的值,您应该使用isset($var) && $var == 'Test'
. 但我不明白为什么你不应该做`$var == 'Test'。解释器会以这种方式抱怨未初始化的变量吗?
阅读以下内容,如果您不了解该功能的isset
实际作用,请提出任何问题:http:
//php.net/manual/en/function.isset.php