繁体   English   中英

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

[英]What is the difference between isset($var) == “Test” and isset($var) && $var == 'Test"

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

第一个没有道理。 如您所见, isset返回一个布尔值。 所以isset($var) == "Test"正如我所说的针对字符串评估布尔值。

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

仅调用$var == 'Test如果不确保已设置它,将导致出现'Undefined variable'的提示。 如果您不确定并且不希望出现噪音日志,则可以使用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()返回truefalse ,并且将非空字符串与true进行比较将得出true

因此最好使用isset($var) && $var == "Test"变体,因为它可以实现您的期望。

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

阅读下面的内容,问任何问题,如果你有什么不明白的功能isset实际上做: http://php.net/manual/en/function.isset.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM