Php isset($var)=”之间的区别是什么;测试“;和isset($var)&&$var==';测试“;

Php isset($var)=”之间的区别是什么;测试“;和isset($var)&&$var==';测试“;,php,isset,Php,Isset,isset($var)=“Test”和isset($var)&&$var='Test”之间的区别是什么?第一个没有任何意义。正如您所看到的,返回一个布尔值。因此isset($var)=“Test”正如我所说的,根据字符串计算布尔值 使用evaluationisset($var)&&$var='Test'PHP首先检查变量$var是否已定义,然后检查该值是否等于字符串'Test' 仅调用$var=='Test而不确保它已设置,将导致“未定义变量”通知。如果您不确定并且不希望出现嘈杂的日志,则可以使

isset($var)=“Test”
isset($var)&&$var='Test”
之间的区别是什么?

第一个没有任何意义。正如您所看到的,返回一个布尔值。因此
isset($var)=“Test”
正如我所说的,根据字符串计算布尔值

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

仅调用
$var=='Test
而不确保它已设置,将导致“未定义变量”通知。如果您不确定并且不希望出现嘈杂的日志,则可以使用isset进行检查。

如果设置了变量,函数
isset()
将返回true(布尔值)。现在,当您比较布尔值==”Test时”“这是假的。因此,要检查变量是否已设置且其值是否为“Test”,应使用
isset($var)&&&$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
false
,与
true
比较的非空字符串将导致
true


因此,最好使用
isset($var)&&&$var==“Test”
变量,因为它执行您所期望的操作。

isset($var)检查$var是否初始化。isset($var)=“Test”检查初始化变量是否等于Test。以上两种方法都提供了相同的结果,只要有某种……文档描述了像
isset()
这样的函数是如何工作的,以及它们返回了什么……准确地说,
isset($var)=“Test”
根据字符串“Test”计算
isset
的布尔返回值;我不会对这个问题投反对票,因为它清楚地表明了提问者的困惑。帮助忍者角比否决一个新手更合适,这是我的观点。谢谢大家…我很困惑,因为我的一个合作开发人员一直在使用这个,我一直和他争论,但我没有证据,因为我是一个新手。PHP抱怨如果你使用一个尚未定义的变量或数组索引,除非您将其传递给
empty
isset
等函数以检查它们是否已定义。生成大量不必要通知的IMO代码闻起来很糟糕。在使用变量/数组索引之前,最好先检查它是否定义了。字符串在PHP中有布尔值。@JackManey,我不知道你想说什么。是的,任何东西都可以转换为布尔值<代码>变量转储((bool)“false”);//bool(true),只有以下字符串将解析为false、空字符串和字符串“0”